Files
gstack/COMPATIBILITY.md
Garry Tan 1829f60596 feat: add JSON Schema definitions + COMPATIBILITY.md for cross-runtime contracts
Four schemas for the OpenClaw dispatch protocol:
- dispatch.schema.json (task dispatch with target_agent, source_signature)
- completion.schema.json (session completion report with retry_count)
- handoff.schema.json (cross-runtime context transfer with resume_prompt)
- activity-entry.schema.json (weekly activity index entries)

COMPATIBILITY.md defines breaking vs non-breaking changes so future
contributors don't guess under pressure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 21:24:22 -07:00

1.4 KiB

Schema Compatibility

gstack uses JSON Schema definitions in schemas/ for cross-runtime file formats (dispatch, completion, handoff, activity). Both the gstack dispatch daemon and OpenClaw bridge skill validate against these schemas.

Version policy

Schema version is tied to gstack's VERSION file.

Breaking change (major version bump required)

A change is breaking if it:

  • Removes a required field
  • Changes a field's type (e.g., string to integer)
  • Changes the semantics of an existing field (e.g., duration from milliseconds to seconds)
  • Narrows an enum (removes a valid value)

Non-breaking change (minor version bump)

A change is non-breaking if it:

  • Adds a new optional field
  • Widens an enum (adds a new valid value)
  • Relaxes a constraint (e.g., increases maxLength)
  • Adds a new schema file

Rules

  1. Additive by default. New fields are always optional. Existing readers ignore unknown fields.
  2. Breaking changes require a major version bump and must be called out in CHANGELOG.
  3. Both sides validate. The gstack daemon validates incoming dispatch files. The OpenClaw bridge validates completion reports. If validation fails, the file is rejected with an error status, not silently ignored.
  4. Schema version in file. Future versions may add a schema_version field to each file for explicit version negotiation. For now, schema version is implied by gstack VERSION.