MarkSpec Schema Contract

JSON Schema contracts for MarkSpec site API artifacts. Validate payloads against the matching schema before processing.

Discovery Protocol

  1. Determine payload kind (entry, reference, component, index, search, matrix,

graph, coverage, bom, diagnostics, lock).

  1. Select the matching v1.json from the schema index below.
  2. Validate payload against the schema before parsing.
  3. Parse required fields first, optional fields second.
  4. Treat all schemas as closed unless they explicitly allow extension.
  5. Stop on unknown version.

Schema Index

ContractJSON SchemaWhat it describesStable key
markspec/lockv1Frozen sidecar metadata (.markspec.lock)ULID map key
markspec/link-targetv1Shared resolved-link target objectdisplayId
markspec/entryv1Typed entry detail payloadid (ULID) / displayId
markspec/componentv1BOM component detail payloadid (ULID) / displayId
markspec/referencev1Reference entry payloadid (ULID) / displayId
markspec/indexv1Entry listing payloadentries[].displayId
markspec/bomv1BOM index (component summaries)components[].displayId
markspec/searchv1Search records for client indexingdisplayId
markspec/traceability-matrixv1Full traceability matrix rowsrows[].displayId
markspec/traceability-graphv1Graph nodes and edgesnodes[].id
markspec/coveragev1Coverage summary and gapsgaps[].displayId
markspec/diagnosticsv1Validation and build diagnosticscode + location

Validation Contract

Validate early so downstream logic stays predictable.

  1. Validation must happen before business logic parsing.
  2. Missing required fields means hard failure.
  3. Unknown optional fields may be ignored only if the schema allows additional

properties.

  1. If schema fetch fails, return a schema-unavailable error.

Failure Modes

Version Policy

Conventions

Quick Example

Input kind: entry\ Schema: markspec/entry/v1.json

  1. Validate payload against entry schema.
  2. Parse required fields (displayId, type, title).
  3. Parse optional fields (body, attributes, links, etc.).
  4. Reject if version is unknown.