Skip to content

Commit 28eddec

Browse files
docs: add a contributor-facing capability glossary (#48)
* docs: add a contributor-facing capability glossary Observe, Tool Enforcement and Full Compute Enforcement are defined in the integration overview's "Integration labels" section, but an adapter PR had no single page to link to, and the reasoning a reviewer applies was spread across the overview and CONTRIBUTING. Add docs/reference/capability-glossary.md restating the three definitions verbatim in substance, plus the boundaries that decide between them: - a prompt instruction, skill, or advisory middleware is not enforced interception; - transporting a protocol directive is not implementing it -- protocol v1 defines seven, the reference v0.2 runtime emits allow and deny; - Enforce Mode requires block_actions=True, and UniversalRuntime rejects an observe-only adapter configured as enforced. Uses the two current examples the codebase already documents: Codex as Tool Enforcement (not Full Compute Enforcement, because specialized and hosted tool paths can fall outside local hook coverage) and Claude Code as Observe. The Claude Code entry notes that engine-declared outcome evidence is a statement about evidence quality, not capability, since that is the likeliest way to misread the label. Closes with a four-step "choosing a label" checklist that resolves ties downward: under-claiming is conservative, over-claiming invites a user to rely on a control that fails open. No capability claim is broadened; every statement traces to overview.md or CONTRIBUTING.md. Linked from docs/index.md, the integration overview and the adapter section of CONTRIBUTING.md. Closes #37 * docs: link the capability glossary from the docs index, overview and CONTRIBUTING The glossary is only useful if an adapter PR can find it. Link it from the three places a contributor actually looks: - docs/index.md, under Reference; - the "Integration labels" section of the integration overview, next to the normative definitions it restates; - the adapter section of CONTRIBUTING.md, after the Full Compute Enforcement bar. Refs #37
1 parent 9f901b6 commit 28eddec

4 files changed

Lines changed: 105 additions & 0 deletions

File tree

‎CONTRIBUTING.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ An adapter must:
6262

6363
An adapter must not advertise Full Compute Enforcement unless the underlying engine exposes official controls for the relevant model turns, tool calls, retry loops, and stopping behavior.
6464

65+
The [capability glossary](docs/reference/capability-glossary.md) defines Observe, Tool Enforcement, and Full Compute Enforcement, and gives the questions a reviewer uses to pick between them.
66+
6567
## Estimator contributions
6668

6769
An estimator must expose a stable name, semantic version, configuration hash, training-data fingerprint when applicable, and provenance. It must report uncertainty or explicitly state that uncertainty is unavailable. Claims of causal marginal value require an identification strategy, not only historical correlation.

‎docs/index.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ MARGINAL documentation is organized by user intent instead of keeping every guid
3030
## Reference
3131

3232
- [API reference](reference/api.md)
33+
- [Capability glossary](reference/capability-glossary.md)
3334

3435
## Operations
3536

‎docs/integrations/overview.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ Documentation must distinguish:
6868

6969
A prompt instruction, skill, or advisory middleware is not equivalent to enforced interception.
7070

71+
See the [capability glossary](../reference/capability-glossary.md) for the contributor-facing
72+
version of these definitions, including how to choose a label for a new adapter.
73+
7174
## Current status
7275

7376
The v0.3 candidate implements and validates the native Codex plugin against Codex CLI 0.147.0.
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Capability glossary
2+
3+
MARGINAL labels every integration with exactly one capability level. The label
4+
is a claim about what the integration can *do*, not about how much evidence it
5+
collects, and it is the first thing a reviewer checks on an adapter pull
6+
request.
7+
8+
The normative definitions live in the
9+
[integration overview](../integrations/overview.md#integration-labels). This
10+
page restates them for contributors and adds the reasoning a reviewer applies,
11+
so an adapter PR can link to one place.
12+
13+
## The three levels
14+
15+
### Observe
16+
17+
Telemetry and non-blocking recommendations.
18+
19+
An Observe integration records normalized evidence and may surface advice, but
20+
it declares no control capability and never blocks or alters an action. If the
21+
integration were removed, the engine would behave identically.
22+
23+
### Tool Enforcement
24+
25+
Supported tool actions can be blocked or changed.
26+
27+
The integration intercepts tool calls through an official engine control point
28+
and a deny or modify directive actually takes effect. The qualifier
29+
**supported** carries weight: a level is Tool Enforcement, not Full Compute
30+
Enforcement, when some tool paths fall outside that coverage.
31+
32+
### Full Compute Enforcement
33+
34+
Model turns, tools, retries, and stop behavior are controllable and measured.
35+
36+
This is the whole compute loop, not just the tool surface.
37+
[`CONTRIBUTING.md`](../../CONTRIBUTING.md#adapter-contributions) states the bar
38+
directly: an adapter must not advertise Full Compute Enforcement unless the
39+
underlying engine exposes official controls for the relevant model turns, tool
40+
calls, retry loops, and stopping behavior.
41+
42+
## What is not enforcement
43+
44+
A prompt instruction, skill, or advisory middleware **is not** equivalent to
45+
enforced interception.
46+
47+
Asking a model not to do something is not the same as being able to stop it.
48+
Only an official engine control point that MARGINAL can refuse through counts
49+
toward an enforcement label. Text that the model is free to ignore does not,
50+
however reliably it happens to be obeyed in practice.
51+
52+
Two related boundaries a reviewer will also check:
53+
54+
- **Transporting a directive is not implementing it.** Protocol v1 defines
55+
allow, deny, modify, defer, reuse, stop, and force-verify, but the reference
56+
v0.2 runtime emits only allow and deny. An adapter may carry the broader
57+
contract; documentation must not imply the rest are generated automatically
58+
until a policy implements them.
59+
- **Enforce Mode requires `block_actions=True`.** `UniversalRuntime` rejects an
60+
observe-only adapter configured as enforced, so the label and the
61+
configuration cannot silently disagree.
62+
63+
## Current MARGINAL examples
64+
65+
### Codex — Tool Enforcement
66+
67+
The native Codex plugin is validated against Codex CLI 0.147.0 and provides
68+
lifecycle correlation, an authenticated local service, Shadow Mode, and Earned
69+
Enforcement receipts.
70+
71+
It is labeled Tool Enforcement rather than Full Compute Enforcement because
72+
specialized and hosted tool paths can fall outside local hook coverage. The
73+
gap is in coverage, not in the mechanism — which is exactly the distinction the
74+
two labels exist to record. See [Codex plugin](../integrations/codex.md).
75+
76+
### Claude Code — Observe
77+
78+
The Claude Code plugin records normalized evidence and repeated-work
79+
recommendations in a local Decision Ledger, declares no control capability, and
80+
never blocks a tool call.
81+
82+
Its outcome evidence is engine-declared, because Claude Code reports success
83+
and failure as separate hook events. Note that this is a statement about
84+
evidence quality, not capability: richer evidence does not move an integration
85+
up a level. See [Claude Code plugin](../integrations/claude-code.md).
86+
87+
## Choosing a label
88+
89+
1. Can the integration refuse or alter an action through an official engine
90+
control point, such that the engine honors it? If no, the label is
91+
**Observe**.
92+
2. Does that control cover every tool path, or only the supported ones? Partial
93+
coverage is **Tool Enforcement**.
94+
3. Does it additionally control model turns, retries, and stopping, with those
95+
measured? Only then is it **Full Compute Enforcement**.
96+
97+
When a step is uncertain, claim the lower label. An integration that
98+
under-claims is merely conservative; one that over-claims invites a user to
99+
rely on a control that will fail open.

0 commit comments

Comments
 (0)