Output Contracts
Normative JSON shapes for block output, manifest output, and compatibility behavior.
Downstream systems should consume Quire outputs, not Quire source syntax.
Block JSON (stretchpress.blocks.v1)
- Schema:
schemas/stretchpress-blocks.v1.json - Alias file remains supported:
schemas/stretchpress-blocks.v1.schema.json
Minimal root shape:
{
"$schema": "https://stretchgroup.dev/schemas/stretchpress.blocks.v1.json",
"format": "stretchpress.blocks",
"version": 1,
"source": { "file": "views/product.quire", "schema": "quire.schema.json" },
"view": {},
"bindings": [],
"blocks": [],
"sourceMap": []
}
Node kinds are:
kind: blockfor render nodeskind: controlwithcontrol: "if"andcontrol: "repeat"for control flow
Expressions and descriptors are serialized as IR objects (literal, path, capability, format, plural, i18n, locale, responsive, etc.).
compile -> import -> compile preserves semantic IR:
viewbindingsblocks
Source-map entries map IR paths to source locations for diagnostics and editor/raycast mapping.
Build manifest
- Schema:
schemas/stretchpress-manifest.v1.schema.json - Generated by
quire build
Manifest shape:
{
"format": "stretchpress.manifest",
"version": 1,
"count": 4,
"entries": [
{
"name": "HomePage",
"source": "home.quire",
"output": "home.blocks.json",
"route": {},
"title": {}
}
]
}
Determinism and golden snapshots
Outputs are required to be deterministic for:
- same source file
- same schema
- same source path metadata
Snapshot contracts are maintained in repository snapshots and rebuilt intentionally with:
npm run golden:update