Renderflow spec v2 reference
This page is generated from the JSON Schema emitted by the Renderflow runtime.
Do not edit it by hand.
Schema identifier: renderflow/v2
Spec v2 describes source intent, derivative selection, execution policy, and deterministic output layout. Planning resolves this intent into an execution plan; the specification itself does not encode a resolved DAG.
Top-level fields
| Field |
Type |
Required |
Default |
execution |
executionPolicy |
no |
— |
hygiene |
object |
no |
{} |
output |
outputLayout |
no |
— |
profiles |
object |
no |
{} |
publication |
object |
no |
— |
schema |
"renderflow/v2" |
yes |
— |
sources |
array |
yes |
— |
targets |
targetSelection |
yes |
— |
transforms |
string / null |
no |
— |
variables |
object |
no |
{} |
Source
| Field |
Type |
Required |
Default |
detect |
boolean |
no |
true |
format |
string / null |
no |
— |
geometry |
object |
no |
— |
id |
stableId |
yes |
— |
immutable |
true |
no |
true |
kind |
artifact / collection |
no |
"artifact" |
media_type |
string / null |
no |
— |
members |
array |
no |
[] |
path |
string / null |
no |
— |
role |
string / null |
no |
— |
sha256 |
string / null |
no |
— |
uri |
string / null |
no |
— |
Publication contract
| Field |
Type |
Required |
Default |
accessibility |
accessibilityMetadata |
no |
— |
artwork |
array |
no |
[] |
asset_policy |
string / null |
no |
— |
canonical_url |
string / null |
no |
— |
color_policy |
string / null |
no |
— |
contributors |
array |
no |
[] |
extensions |
object |
no |
{} |
font_policy |
string / null |
no |
— |
geometry |
pageGeometry |
yes |
— |
identifiers |
object |
no |
{} |
issue_id |
string |
yes |
— |
issue_number |
string / null |
no |
— |
language |
string |
yes |
— |
output_roles |
object |
no |
{} |
publication |
string |
yes |
— |
publication_date |
string |
yes |
— |
rights |
publicationRights |
no |
— |
schema |
"renderflow.publication/v1" |
no |
"renderflow.publication/v1" |
series |
string / null |
no |
— |
status |
draft / reviewed / approved / released |
no |
"draft" |
subtitle |
string / null |
no |
— |
title |
string |
yes |
— |
Publication output-role constraints
| Field |
Type |
Required |
Default |
color_policy |
string / null |
no |
— |
format |
string |
yes |
— |
geometry |
object |
no |
— |
minimum_image_dpi |
integer / null |
no |
— |
require_embedded_fonts |
boolean |
no |
false |
stage |
string |
no |
"" |
validators |
array |
no |
[] |
Target selection
| Field |
Type |
Required |
Default |
all_reachable |
boolean |
no |
false |
exact |
array |
no |
[] |
exclude |
selectorSet |
no |
— |
include |
selectorSet |
no |
— |
intermediates |
cache_only / retain |
no |
"cache_only" |
profiles |
array |
no |
[] |
Execution policy
| Field |
Type |
Required |
Default |
ai |
deny / local_only / allow |
no |
"deny" |
budgets |
budgets |
no |
— |
fixed_layout_epub |
object |
no |
— |
hygiene_policy |
object |
no |
— |
max_parallel |
integer |
no |
1 |
minimum_fidelity |
number / null |
no |
— |
network |
deny / allow |
no |
"deny" |
optimization |
speed / quality / balanced / pareto |
no |
"balanced" |
print_pdf_interior |
object |
no |
— |
publication_policy |
string / null |
no |
— |
redaction_policy |
string / null |
no |
— |
reject_loss_classes |
array |
no |
[] |
requirements |
requirements |
no |
— |
retry_policy |
string / null |
no |
— |
timeout_policy |
string / null |
no |
— |
tools |
allowDeny |
no |
— |
transforms |
allowDeny |
no |
— |
validation |
validation |
no |
— |
Print-interior PDF policy
| Field |
Type |
Required |
Default |
box_policy |
"media_bleed_trim_inset" |
yes |
— |
color_policy |
"preserve_rgb_gray" |
yes |
— |
executable |
string |
yes |
— |
max_input_bytes |
integer |
yes |
— |
max_output_bytes |
integer |
yes |
— |
max_pages |
integer |
yes |
— |
provider_version |
"0.6.3" |
yes |
— |
rotation |
"none" |
yes |
— |
scaling |
"fit" |
yes |
— |
timeout_seconds |
integer |
yes |
— |
Fixed-layout EPUB policy
| Field |
Type |
Required |
Default |
cover_member_id |
stableId |
yes |
— |
max_input_bytes |
integer |
yes |
— |
max_output_bytes |
integer |
yes |
— |
max_pages |
integer |
yes |
— |
page_progression_direction |
ltr / rtl |
yes |
— |
spread |
"none" |
yes |
— |
Output layout
| Field |
Type |
Required |
Default |
bundle_root |
string |
no |
"dist" |
collision |
error / replace / dedupe |
no |
"error" |
naming_template |
string |
no |
"{source.id}/{target.role}.{ext}" |
Compatibility
Unversioned configuration files are treated as the explicit v1 compatibility format. Use renderflow spec migrate to produce a v2 document. Unsupported declared schema identifiers are rejected rather than reinterpreted.
Example
schema: renderflow/v2
sources:
- id: source.cover
role: cover
path: assets/cover.png
media_type: image/png
format: png
sha256: "0000000000000000000000000000000000000000000000000000000000000000"
detect: true
- id: source.body
role: manuscript
path: examples/input.md
format: markdown
media_type: text/markdown
sha256: "0000000000000000000000000000000000000000000000000000000000000000"
detect: true
- id: source.publication
role: publication
kind: collection
# Illustrative mixed-media intent; current canonical execution requires
# a homogeneous collection and a registered collection-input transform.
members:
- source.cover
- source.body
profiles:
publication.web:
description: Browser-ready publication derivatives
targets:
- id: target.web
role: web
format: html
publication.archive:
description: Long-lived local archival derivatives
targets:
- id: target.pdf
role: archival
format: pdf
targets:
profiles:
- publication.web
all_reachable: true
include:
families:
- document
- image
exclude:
capabilities:
- ai.generate
intermediates: cache_only
execution:
optimization: balanced
max_parallel: 4
budgets:
max_output_bytes: 1073741824
max_storage_bytes: 2147483648
max_artifacts: 500
max_depth: 8
tools:
deny: []
transforms:
deny: []
requirements:
deterministic: true
local_only: true
offline: true
network: deny
ai: deny
validation:
required: true
failure_mode: branch_local
allow_unavailable: false
minimum_fidelity: 0.9
reject_loss_classes:
- lossy
- unknown
output:
bundle_root: dist
naming_template: "{source.id}/{target.role}.{ext}"
collision: error
variables:
project: renderflow
transforms: transforms.yaml