Skip to content

§9 (Action fields) vs §15 (Conformance) disagree on which action fields are required #2

@benikigai

Description

@benikigai

Inconsistency

SPEC.md §9 (Action fields table, lines 286-305) marks the following action fields as required:

Field Required
id yes
description yes
auth_required yes
inputs yes
outputs yes

But §15 Conformance (lines 425-435) only lists action description as SHOULD:

A conforming agent.json file SHOULD:

  • Declare error recovery for all expected failure states
  • Include description on every action
  • Declare sensitivity on destructive or irreversible actions

auth_required, inputs, outputs are not mentioned in §15 at all. So an implementer who reads §15 as authoritative will produce an action with only id + via + operation (since endpoint/method are conditional on via), and miss four "required" fields that §9 marks mandatory.

Example in the wild

laclawclaw.com/.well-known/agent.json (cited in v0.2 changelog as the reference implementation) shipped with skeletal actions for ~6 weeks. Just patched in LaClawClaw/laclawclaw#1. If the reference implementation can't get this right, the spec text is ambiguous.

Proposed resolution (v0.3)

Pick one of:

Option A — tighten §15. Add the §9-required action fields to the MUST list in conformance. Clear, strict, breaks any existing implementation that ships skeletal actions.

Option B — relax §9. Mark description, auth_required, inputs, outputs as recommended (not required), with a clear note that omitting them limits agent planning. Keep §15 SHOULD.

Option C — two-tier conformance. Define minimal vs full conformance levels. Minimal = top-level fields + bare actions (current §15). Full = all §9 fields populated. Implementations advertise which level they conform to via a top-level field.

Option B is most pragmatic for early adoption (low-friction onboarding). Option A is technically cleanest. Option C is most flexible but adds a new field.

Happy to draft a PR once direction is picked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions