Files
gstack/COMPATIBILITY.md
T
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

33 lines
1.4 KiB
Markdown

# 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.