{
  "$schema": "https://www.cuddler.dev/standards/specification-root-1.0.0.json",
  "meta": {
    "standardId": "specification-root",
    "standardVersion": "1.0.0",
    "documentType": "document-role-specification",
    "version": "1.0.0",
    "title": "Process Document Role",
    "status": "Public normative publication",
    "publishedAt": "2026-03-21T00:00:00Z",
    "updatedAt": "2026-04-02T00:00:00Z",
    "canonicalVersionUrl": "https://www.cuddler.dev/standards/document-role/process/",
    "canonicalDocumentRoleSpecificationUrl": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/document-role-specification.json",
    "summary": "Process Document Role is the official Cuddler Document Role for release 1.0.0, defining the governing rules for this artifact domain and the Process-specific authoring summary Artifact Definitions in this domain must satisfy alongside the shared Artifact Specification, including typed questions, explicit answer types, JSONL-style conversation records stored as a JSON array, question outputs, and deterministic routing.",
    "authors": [
      {
        "name": "Matt Edwards",
        "url": "https://www.cuddler.dev/standards/authors/matt-edwards/"
      }
    ],
    "license": "© 2026 TrackThat. This work is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0). See https://www.cuddler.dev/license/ for the site license summary. You are free to share, use, adapt, and modify this material, including for commercial purposes, provided you give appropriate attribution and include a link to the original source URL and the CC BY 4.0 license at https://creativecommons.org/licenses/by/4.0/.",
    "copyright": "© 2026 TrackThat.",
    "domainSpecificationId": "process"
  },
  "content": {
    "abstract": "This release defines the full Process Document Role v1.0.0 in one self-contained publication. It governs the Workflow domain, classifies process-oriented Artifact Definitions into that domain, and sets the domain-level summary for authoring complex workflow structure, typed questions, explicit answer types, JSONL-style conversation records stored as a JSON array, conditional section inclusion, semantic validation, diagnostics, publication, and reuse rules those Artifact Definitions must satisfy alongside the shared Artifact Specification.",
    "documentMediaType": "text/html",
    "documentHtml": "<h2>Version 1.0.0</h2>\n<h3>1. Abstract</h3>\n<p>This document defines the Process Document Role v1.0.0 as the governing Document Role for the Workflow domain. Artifact Definitions classified into this domain MUST conform to both this Document Role and the shared Artifact Specification.</p>\n<p>The v1 process model remains intentionally small:</p>\n<ol>\n<li>a catalog owns one or more workflows,</li>\n<li>a workflow defines one ordered sequence of steps,</li>\n<li>a step is defined by a typed questionnaire and an optional supporting script asset.</li>\n</ol>\n<p>Process Artifact Definitions authored under this Document Role MAY describe complex standard operating procedures and business processes, but they MUST do so with explicit typed structures and deterministic section-inclusion rules rather than ambiguous narrative branching.</p>\n<p>This release is a hardening patch over v1.0.0. It corrects support-artifact schema handling, sharpens conformance language, makes the feed derivation rules more deterministic, aligns diagnostics with RFC 6901 JSON Pointer semantics, and expands the conformance fixture set so every public rule identifier is exercised by at least one published fixture.</p>\n<hr />\n<h3>2. Status, Scope, and Publication Framing</h3>\n<p>This document is a stable public normative publication for the v1 process contract published at <code>https://www.cuddler.dev/standards/document-role/process/</code>.</p>\n<p>This versioned Document Role is intentionally self-contained. It includes the full normative contract for release <code>1.0.0</code>, and no linked schema, manifest, example, or support file is required in order to understand the required behavior defined here.</p>\n<p>The primary normative contribution is the <strong>core process contract</strong> made of:</p>\n<ol>\n<li><code>catalog.manifest.json</code></li>\n<li><code>workflow.manifest.json</code></li>\n<li><code>*.process.json</code></li>\n</ol>\n<p>The rest of the release is organized as supporting material around that core:</p>\n<ol>\n<li><strong>Publication profile</strong>: <code>feed.json</code></li>\n<li><strong>Adjunct package profiles</strong>: <code>plugin.manifest.json</code>, <code>skill.manifest.json</code>, <code>exec.workflow.json</code></li>\n<li><strong>Conformance and support artifacts</strong>: diagnostics schema, registries, tests manifest, implementation-record template, and example bundle manifest</li>\n</ol>\n<p>This Document Role defines:</p><ol><li>the core process model,</li><li>the domain-level rules for JSON Artifact Definitions used in this domain, alongside the shared Artifact Specification that governs Artifact Definition authoring globally,</li><li>the authoring rules for valid process data files,</li>\n<li>the semantic validation rules that run after per-file schema validation,</li>\n<li>deterministic diagnostics and conformance expectations,</li>\n<li>publication derivation rules for <code>feed.json</code>,</li>\n<li>governance, migration, reuse, security, and privacy expectations for the public standard.</li>\n</ol>\n<p>This Document Role does not standardize:</p>\n<ol>\n<li>a workflow runtime,</li>\n<li>plugin transport protocols,</li>\n<li>desktop UX,</li>\n<li>agent-memory or state-persistence internals,</li>\n<li>permission prompts or approval UIs,</li>\n<li>package signature infrastructure,</li>\n<li>telemetry formats,</li>\n<li>cross-step data-passing contracts beyond per-question outputs.</li>\n</ol>\n<hr />\n<h3>3. Conformance and Requirement Language</h3>\n<h4>3.1 BCP 14 Language</h4>\n<p>The key words <code>MUST</code>, <code>MUST NOT</code>, <code>REQUIRED</code>, <code>SHALL</code>, <code>SHALL NOT</code>, <code>SHOULD</code>, <code>SHOULD NOT</code>, <code>RECOMMENDED</code>, <code>MAY</code>, and <code>OPTIONAL</code> in this document are to be interpreted as described in BCP 14 (<code>RFC 2119</code> and <code>RFC 8174</code>) when, and only when, they appear in all capitals.</p>\n<h4>3.2 Formal conformance classes</h4>\n<p>This specification defines the following formal conformance classes:</p>\n<ol>\n<li><strong>Artifact Definition authoring implementation</strong>: produces or maintains the published JSON Artifact Definitions and support-artifact schemas defined by this release.</li>\n<li><strong>Validator</strong>: resolves schemas, validates source artifacts, runs semantic validation, and emits deterministic diagnostics.</li>\n<li><strong>Publisher</strong>: derives publication artifacts such as <code>feed.json</code> from valid source artifacts.</li>\n</ol>\n<p>These are the only formal conformance classes for v1.0.0.</p>\n<h4>3.3 Informative implementation profiles</h4>\n<p>This release also publishes informative profiles that are useful but are not themselves formal conformance classes:</p>\n<ol>\n<li><strong>AI executor read-only v1 profile</strong>: consumes the public contract, locates the relevant artifacts, and understands the catalog -&gt; workflow -&gt; step model without claiming standardized execution semantics.</li>\n<li><strong>Adjunct-aware profile</strong>: additionally understands one or more optional adjunct surfaces such as <code>plugin.manifest.json</code>, <code>skill.manifest.json</code>, or <code>exec.workflow.json</code>.</li>\n</ol>\n<p>Those profiles are published for tooling guidance and fixture discovery. They are not substitutes for the formal conformance classes above.</p>\n<h4>3.4 Conforming process Artifact Definition</h4>\n<p>A conforming Cuddler process Artifact Definition MUST:</p>\n<ol>\n<li>use JSON Schema Draft 2020-12,</li>\n<li>match the authoring profile defined by this Document Role,</li>\n<li>publish meaningful <code>for-ai</code> Alpaca arrays for every instance-visible property, either directly or through a reused definition,</li>\n<li>constrain identifiers, versions, and paths consistently with this document,</li>\n<li>remain aligned with the core process model in Section 7,</li>\n<li>encode section-inclusion dependencies with explicit discriminator fields and deterministic schema conditionals rather than open-ended prose,</li>\n<li>define branching, approval, exception, role, and evidence structures explicitly whenever the artifact type requires them,</li>\n<li>define typed questions, explicit answer types from <code>select-one</code>, <code>select-many</code>, <code>number</code>, <code>short-text</code>, <code>long-text</code>, <code>date</code>, and <code>percentage</code>, conversation stored as a JSON array of JSONL-style record objects, question-level <code>for-ai</code> evaluation guidance, and deterministic next-question routing whenever a workflow step uses one <code>*.process.json</code> document as its typed question contract,</li>\n<li>be listed in <code>specification.index.json</code>,</li>\n<li>preserve stable canonical <code>$id</code> values for the release.</li>\n</ol>\n<h4>3.5 Conforming process data file</h4>\n<p>A conforming process data file MUST:</p>\n<ol>\n<li>declare the correct <code>$schema</code> value for its artifact type,</li>\n<li>pass JSON Schema validation against that schema,</li>\n<li>satisfy the relevant authoring profile in this document,</li>\n<li>pass the semantic validation rules defined in Section 13 when cross-file relationships apply.</li>\n</ol>\n<h4>3.6 Conforming validator</h4>\n<p>A conforming validator MUST:</p>\n<ol>\n<li>resolve the declared schema according to Section 12,</li>\n<li>fail on schema-validation errors,</li>\n<li>run semantic validation after schema success,</li>\n<li>fail on semantic-validation errors,</li>\n<li>emit diagnostics that conform to <code>diagnostics.schema.json</code>,</li>\n<li>emit stable <code>ruleId</code> values for every public failure condition,</li>\n<li>identify the failing artifact and location deterministically,</li>\n<li>preserve authored ordering when reporting failures discovered in ordered arrays or repeated semantic checks.</li>\n</ol>\n<h4>3.7 Conforming publisher</h4>\n<p>A conforming publisher MUST:</p>\n<ol>\n<li>begin from valid source artifacts,</li>\n<li>refuse to publish source content that fails schema validation or semantic validation,</li>\n<li>derive publication artifacts from valid source content rather than treating them as standalone authored truth,</li>\n<li>preserve the catalog -&gt; workflow -&gt; step model when emitting publication outputs,</li>\n<li>generate <code>publishedOnUtc</code> values in UTC with a trailing <code>Z</code> when the publisher is the system generating those values,</li>\n<li>derive <code>feed.json</code> according to Section 14.</li>\n</ol>\n<hr />\n<h3>4. Normative References</h3>\n<p>The following references are normative for this specification:</p>\n<ol>\n<li><code>RFC 2119</code>, Key words for use in RFCs to Indicate Requirement Levels</li>\n<li><code>RFC 8174</code>, Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</li>\n<li>JSON Schema Draft 2020-12 Core</li>\n<li>JSON Schema Draft 2020-12 Validation</li>\n<li>JSON Schema Draft 2020-12 Recommended Output</li>\n<li><code>RFC 3986</code>, Uniform Resource Identifier (URI): Generic Syntax</li>\n<li><code>RFC 6570</code>, URI Template</li>\n<li><code>RFC 6901</code>, JavaScript Object Notation (JSON) Pointer</li>\n<li><code>RFC 7763</code>, The <code>text/markdown</code> Media Type</li>\n<li>Semantic Versioning 2.0.0, <code>https://semver.org/</code></li>\n<li><code>RFC 3339</code>, Date and Time on the Internet: Timestamps</li>\n<li><code>RFC 3552</code>, Guidelines for Writing RFC Text on Security Considerations</li>\n</ol>\n<p>Where this specification restricts a referenced standard to a narrower authoring profile, the narrower Cuddler rule governs within this contract.</p>\n<hr />\n<h3>5. Design Goals and Non-goals</h3>\n<h4>5.1 Design goals</h4>\n<p>The design goals of v1 are:</p>\n<ol>\n<li>minimal authoring core,</li>\n<li>transport and runtime neutrality at the source-contract level,</li>\n<li>machine-validatable JSON artifacts,</li>\n<li>human-authorable source files,</li>\n<li>public documentation that humans and AI assistants can consume directly,</li>\n<li>explicit separation of schema validation and semantic validation.</li>\n</ol>\n<h4>5.2 Non-goals</h4>\n<p>The non-goals of v1 are:</p>\n<ol>\n<li>full workflow-engine standardization,</li>\n<li>standardized step I/O contracts,</li>\n<li>universal runtime capability negotiation,</li>\n<li>agent-memory serialization,</li>\n<li>package-signing infrastructure,</li>\n<li>telemetry or execution-log standardization.</li>\n</ol>\n<hr />\n<h3>6. Terminology and Identity</h3>\n<p>This Document Role uses <strong>Process Document Role</strong> as the public contract name.</p>\n<p>The legacy <code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/...</code> namespace remains the canonical identifier namespace only for the published <strong>instance-validation schemas</strong> retained for compatibility in the v1 line:</p>\n<ol>\n<li><code>catalog.manifest.schema.json</code></li>\n<li><code>workflow.manifest.schema.json</code></li>\n<li><code>questionnaire.schema.json</code></li>\n<li><code>plugin.manifest.schema.json</code></li>\n<li><code>skill.manifest.schema.json</code></li>\n<li><code>exec.workflow.schema.json</code></li>\n<li><code>feed.schema.json</code></li>\n</ol>\n<p>Support-artifact schemas published for v1.0.0 use Cuddler-hosted schema identifiers under <code>https://www.cuddler.dev/standards/document-role/process/</code>.</p>\n<p>Public prose, release pages, and examples MUST use Cuddler naming. The retained legacy namespace MUST NOT be interpreted as a competing product identity.</p>\n<hr />\n<h3>7. Core Process Model</h3>\n<p>The v1 core process contract consists of three required data-file types:</p>\n<ol>\n<li><code>catalog.manifest.json</code></li>\n<li><code>workflow.manifest.json</code></li>\n<li><code>*.process.json</code></li>\n</ol>\n<p>Their relationship is fixed:</p>\n<ol>\n<li>a catalog manifest declares one process family,</li>\n<li>the catalog references one or more workflow manifests,</li>\n<li>each workflow manifest declares one ordered sequence of steps,</li>\n<li>each step references one questionnaire document,</li>\n<li>a step MAY also reference one supporting script asset.</li>\n</ol>\n<p>Complex procedures, approval paths, exception routes, escalation rules, and evidence requirements MAY be represented by Artifact Definitions in this domain, but any such structure MUST be modeled through deterministic typed fields, ordered collections, and explicit conditional gates anchored in the catalog-to-workflow-to-step relationship.</p>\n<p>The core contract does not require:</p>\n<ol>\n<li>a plugin runtime,</li>\n<li>a desktop package,</li>\n<li>a transport mechanism,</li>\n<li>a publication feed entry,</li>\n<li>a machine-readable execution-state model.</li>\n</ol>\n<p>This conceptual core MUST remain stable throughout the v1 line.</p>\n<hr />\n<h3>8. Artifact Taxonomy and Canonical Source Layout</h3>\n<h4>8.1 Core contract</h4>\n<p>The minimum authored source surface for a valid process family is:</p>\n<ol>\n<li><code>catalog.manifest.json</code></li>\n<li><code>workflow.manifest.json</code></li>\n<li><code>*.process.json</code></li>\n</ol>\n<h4>8.2 Companion publication and adjunct profiles</h4>\n<p>The following surfaces are companion profiles rather than part of the minimum authored source surface:</p>\n<ol>\n<li><code>feed.json</code> as the publication profile</li>\n<li><code>plugin.manifest.json</code> as an adjunct package profile</li>\n<li><code>skill.manifest.json</code> as an adjunct package profile</li>\n<li><code>exec.workflow.json</code> as an adjunct package profile</li>\n</ol>\n<p>Those artifacts are optional for core source validity and do not add normative requirements beyond the ones stated in this document.</p>\n<h4>8.3 Canonical source layout</h4>\n<p>The canonical source layout for one catalog is:</p>\n<pre><code class=\"language-text\">catalogs/&lt;catalog-id&gt;/\n  catalog.manifest.json\n  plugin.manifest.json                # optional adjunct\n  skill.manifest.json                 # optional adjunct\n  exec.workflow.json                  # optional adjunct\n  &lt;workflow-id&gt;/\n    workflow.manifest.json\n    &lt;step-id&gt;.process.json\n    &lt;step-id&gt;/script.ps1            # optional\n</code></pre>\n<p>All manifest path references in v1.0.0 MUST use the catalog-root-relative reference frame.</p>\n<p>That means every referenced path is resolved relative to the directory that contains <code>catalog.manifest.json</code>.</p>\n<hr />\n<h3>9. Artifact Registry</h3>\n<p>The machine-readable artifact registry for this release is published as <code>specification.index.json</code>.</p>\n<p>The normative instance-validation artifact mapping is:</p>\n<table>\n<thead>\n<tr>\n<th>Artifact type</th>\n<th>Canonical schema <code>$id</code></th>\n<th>Repo source path</th>\n<th>Public download URL</th>\n<th>Instance files validated</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Catalog manifest schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/catalog.manifest.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/catalog.manifest.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/catalog.manifest.schema.json</code></td>\n<td><code>catalog.manifest.json</code></td>\n</tr>\n<tr>\n<td>Workflow manifest schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/workflow.manifest.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/workflow.manifest.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/workflow.manifest.schema.json</code></td>\n<td><code>workflow.manifest.json</code></td>\n</tr>\n<tr>\n<td>Questionnaire schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/questionnaire.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/questionnaire.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/questionnaire.schema.json</code></td>\n<td><code>*.process.json</code></td>\n</tr>\n<tr>\n<td>Plugin manifest schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/plugin.manifest.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/plugin.manifest.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/plugin.manifest.schema.json</code></td>\n<td><code>plugin.manifest.json</code></td>\n</tr>\n<tr>\n<td>Skill manifest schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/skill.manifest.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/skill.manifest.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/skill.manifest.schema.json</code></td>\n<td><code>skill.manifest.json</code></td>\n</tr>\n<tr>\n<td>Exec workflow schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/exec.workflow.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/exec.workflow.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/exec.workflow.schema.json</code></td>\n<td><code>exec.workflow.json</code></td>\n</tr>\n<tr>\n<td>Feed schema</td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/feed.schema.json</code></td>\n<td><code>tests/fixtures/document-role-specifications/process-document-role-specification/1.0.0/support/feed.schema.json</code></td>\n<td><code>https://www.cuddler.dev/standards/document-role/process/v1.0.0/feed.schema.json</code></td>\n<td><code>feed.json</code></td>\n</tr>\n</tbody>\n</table>\n<p>Support-artifact schemas and manifests are also normative release artifacts and are listed in <code>specification.index.json</code>.</p>\n<p><code>specification.index.json</code> is a machine-readable registry for the release package. It supports tooling and publication workflows, but the normative contract remains fully stated in this document.</p>\n<hr />\n<h3>10. Path, Identifier, Version, and Format Rules</h3>\n<h4>10.1 Identifier rules</h4>\n<p>Catalog ids, workflow ids, step ids, questionnaire ids, and publication asset ids MUST:</p>\n<ol>\n<li>be case-sensitive,</li>\n<li>use lowercase kebab-case,</li>\n<li>match <code>^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$</code>,</li>\n<li>remain stable once published unless all affected references are intentionally updated in the same change.</li>\n</ol>\n<p><code>questionnaireId</code> MUST equal the owning step id.</p>\n<h4>10.2 Version rules</h4>\n<p>The canonical authoring form for process manifest <code>version</code> fields is a release-version string in <code>MAJOR.MINOR.PATCH</code> form such as <code>2.3.0</code>.</p>\n<p>For compatibility, the catalog, workflow, and exec-workflow schemas MAY still accept a positive integer version in the v1 line.</p>\n<p>When both forms are technically accepted:</p>\n<ol>\n<li>authors SHOULD emit a release-version string,</li>\n<li>validators MUST accept either the canonical release-version string or a positive integer where the schema allows it,</li>\n<li>examples in this Document Role MUST use release-version strings,</li>\n<li>integer compatibility is deprecated for a future major revision.</li>\n</ol>\n<h4>10.3 JSON Schema format handling</h4>\n<p>Implementations MUST support JSON Schema Draft 2020-12.</p>\n<p>When section visibility or required content depends on prior answers, implementations MUST enforce those dependencies with JSON Schema mechanisms such as <code>if</code>/<code>then</code>/<code>else</code>, <code>dependentRequired</code>, or <code>dependentSchemas</code> rather than treating them as optional reviewer interpretation.</p>\n<p>Within this Document Role, the following format-bearing constraints MUST be treated as assertions by a conforming validator:</p>\n<ol>\n<li><code>date</code></li>\n<li><code>date-time</code></li>\n<li><code>uri</code></li>\n<li><code>uri-reference</code></li>\n</ol>\n<p>Validators MUST NOT silently downgrade those checks to annotation-only behavior for conformance decisions.</p>\n<h4>10.4 Path resolution algorithm</h4>\n<p>A conforming validator or publisher MUST resolve catalog-root-relative paths with the following algorithm:</p>\n<ol>\n<li>take the directory containing <code>catalog.manifest.json</code> as the catalog root,</li>\n<li>read the authored path exactly as written,</li>\n<li>reject the path if it is empty,</li>\n<li>reject the path if it begins with <code>/</code>,</li>\n<li>reject the path if it contains <code>\\</code>,</li>\n<li>reject the path if it contains a Windows drive prefix such as <code>C:</code>,</li>\n<li>split on <code>/</code>,</li>\n<li>reject any empty segment, <code>.</code> segment, or <code>..</code> segment,</li>\n<li>join the remaining segments using <code>/</code> for logical resolution,</li>\n<li>resolve the logical path beneath the catalog root,</li>\n<li>reject the path if filesystem canonicalization escapes the catalog root,</li>\n<li>reject the path if the target does not exist when the rule being evaluated requires an existing artifact.</li>\n</ol>\n<p>The path language of v1.0.0 is intentionally the ASCII-like language enforced by the published path regexes. This release does not define additional Unicode normalization behavior.</p>\n<hr />\n<h3>11. Schema Resolution Rules</h3>\n<h4>11.1 Core and companion instance artifacts</h4>\n<p>Within Cuddler core, adjunct, and publication instance documents, <code>$schema</code> is an application-level schema locator that identifies the canonical validation schema for the instance document.</p>\n<h4>11.2 Support artifacts</h4>\n<p>Within support manifests and registries such as <code>specification.index.json</code>, <code>semantic-rules.json</code>, <code>conformance.manifest.json</code>, <code>tests/manifest.json</code>, <code>implementation-record.template.json</code>, and <code>examples.manifest.json</code>, <code>$schema</code> identifies the Cuddler-published instance schema for that support artifact type.</p>\n<h4>11.3 Resolution algorithm</h4>\n<p>A conforming validator MUST resolve schemas as follows:</p>\n<ol>\n<li>read the <code>$schema</code> string from the instance document,</li>\n<li>compare it to the canonical identifiers listed in <code>specification.index.json</code>,</li>\n<li>if an exact canonical identifier match exists in a local pinned mapping, use that local resource,</li>\n<li>otherwise, if an exact match exists in a release-local artifact registry bundled with the validator, use that resource,</li>\n<li>otherwise, an implementation MAY fetch the schema over the network if its security policy allows network schema resolution,</li>\n<li>if network schema resolution is disabled or fails, emit <code>AUT-SCHEMA-001</code>,</li>\n<li>if the validator has a pinned release artifact for that schema identifier, it MUST compare the resolved schema bytes to the SHA-256 digest published in <code>specification.index.json</code>,</li>\n<li>if the resolved bytes do not match the published pinned digest, the validator MUST fail closed and emit <code>AUT-SCHEMA-002</code>.</li>\n</ol>\n<p>For public Cuddler release validation, offline pinned release-local schemas are RECOMMENDED over live network fetches.</p>\n<p>Validators MUST NOT prefer an arbitrary same-filename local file over the canonical schema-identifier mapping when the two disagree.</p>\n<hr />\n<h3>12. Semantic Validation, Diagnostics, and Rule Identifiers</h3>\n<h4>12.1 Semantic validation model</h4>\n<p>Schema validation checks one document at a time.</p>\n<p>Semantic validation checks cross-file relationships and release-specific invariants that cannot be expressed adequately in one schema alone.</p>\n<p>The machine-readable semantic rule registry for this release is <code>semantic-rules.json</code>.</p>\n<h4>12.2 Required public rule identifiers</h4>\n<p>At minimum, a conforming validator MUST implement these public rule identifiers:</p>\n<ol>\n<li><code>AUT-SCHEMA-001</code>: schema could not be resolved</li>\n<li><code>AUT-SCHEMA-002</code>: resolved schema bytes did not match the pinned release schema digest</li>\n<li><code>AUT-SCHEMA-003</code>: JSON Schema validation failed</li>\n<li><code>AUT-SEM-001</code>: each <code>catalog.manifest.json.workflows[].id</code> MUST equal the <code>id</code> inside the referenced <code>workflow.manifest.json</code></li>\n<li><code>AUT-SEM-002</code>: each declared workflow <code>path</code> MUST resolve to an existing <code>workflow.manifest.json</code> within the catalog root</li>\n<li><code>AUT-SEM-003</code>: each workflow step id MUST be unique within its owning workflow</li>\n<li><code>AUT-SEM-004</code>: each declared <code>questionnairePath</code> MUST resolve to an existing <code>*.process.json</code></li>\n<li><code>AUT-SEM-005</code>: each declared <code>scriptPath</code> MUST resolve to an existing script asset</li>\n<li><code>AUT-SEM-006</code>: each <code>*.process.json.questionnaireId</code> MUST match the owning step id</li>\n<li><code>AUT-SEM-007</code>: each referenced adjunct manifest path MUST resolve to the declared adjunct artifact type</li>\n<li><code>AUT-SEM-008</code>: duplicated feed-item summary fields MUST equal their embedded manifest counterparts when both are present</li>\n<li><code>AUT-SEM-009</code>: duplicate workflow reference ids within a catalog MUST be rejected</li>\n<li><code>AUT-SEM-010</code>: duplicate publication package identity tuples <code>(catalogId, version)</code> within one feed MUST be rejected</li>\n<li><code>AUT-SEM-011</code>: each <code>*.process.json.entryQuestionId</code> MUST resolve to one declared question id in the same questionnaire document</li>\n<li><code>AUT-SEM-012</code>: each declared <code>questionId</code> in one <code>*.process.json</code> document MUST be unique within that questionnaire document</li>\n<li><code>AUT-SEM-013</code>: each routing <code>nextQuestionId</code> in one <code>*.process.json</code> document MUST resolve to an existing question id in the same questionnaire document unless the route marks completion</li>\n</ol>\n<h4>12.3 Diagnostics model</h4>\n<p>A conforming validator MUST emit a JSON object matching <code>diagnostics.schema.json</code>.</p>\n<p>Each diagnostic entry MUST include:</p>\n<ol>\n<li><code>message</code></li>\n<li><code>severity</code></li>\n<li><code>artifactPath</code></li>\n<li><code>ruleId</code></li>\n</ol>\n<p>When available, a diagnostic SHOULD also include:</p>\n<ol>\n<li><code>code</code></li>\n<li><code>instancePath</code></li>\n<li><code>schemaPath</code></li>\n<li><code>expected</code></li>\n<li><code>actual</code></li>\n<li><code>relatedArtifactPath</code></li>\n</ol>\n<p><code>instancePath</code> MUST be an RFC 6901 JSON Pointer.</p>\n<p><code>schemaPath</code> MUST be an RFC 6901 JSON Pointer into the resolved schema document.</p>\n<p>Errors fail conformance. Warnings and info entries do not.</p>\n<h4>12.4 Metadata equality and intentional non-equality</h4>\n<p>The following equality rules are normative:</p>\n<ol>\n<li><code>questionnaireId</code> MUST equal the owning step id,</li>\n<li><code>catalog.workflows[].id</code> MUST equal the referenced workflow <code>id</code>,</li>\n<li>whenever root <code>feedItem</code> summary fields are present for <code>displayName</code>, <code>description</code>, <code>author</code>, <code>organization</code>, <code>categories</code>, or <code>tags</code>, they MUST equal the corresponding fields inside <code>manifest</code>.</li>\n</ol>\n<p>The following fields are intentionally allowed to differ:</p>\n<ol>\n<li><code>workflow.steps[].title</code> and <code>*.process.json.title</code>,</li>\n<li><code>workflow.steps[].summary</code> and <code>*.process.json.summary</code>.</li>\n</ol>\n<h4>12.5 Example diagnostics</h4>\n<p>Schema failure example:</p>\n<pre><code class=\"language-json\">{\n  &quot;specVersion&quot;: &quot;1.0.0&quot;,\n  &quot;valid&quot;: false,\n  &quot;diagnostics&quot;: [\n    {\n      &quot;message&quot;: &quot;Required property \\&quot;workflows\\&quot; is missing.&quot;,\n      &quot;severity&quot;: &quot;error&quot;,\n      &quot;artifactPath&quot;: &quot;catalogs/customer-success-playbooks/catalog.manifest.json&quot;,\n      &quot;instancePath&quot;: &quot;&quot;,\n      &quot;schemaPath&quot;: &quot;/required&quot;,\n      &quot;ruleId&quot;: &quot;AUT-SCHEMA-003&quot;,\n      &quot;expected&quot;: [\n        &quot;$schema&quot;,\n        &quot;id&quot;,\n        &quot;version&quot;,\n        &quot;name&quot;,\n        &quot;description&quot;,\n        &quot;workflows&quot;\n      ]\n    }\n  ]\n}\n</code></pre>\n<p>Semantic failure example:</p>\n<pre><code class=\"language-json\">{\n  &quot;specVersion&quot;: &quot;1.0.0&quot;,\n  &quot;valid&quot;: false,\n  &quot;diagnostics&quot;: [\n    {\n      &quot;message&quot;: &quot;workflow reference id \\&quot;lead-intake\\&quot; does not match the referenced workflow id \\&quot;lead-intake-v2\\&quot;.&quot;,\n      &quot;severity&quot;: &quot;error&quot;,\n      &quot;artifactPath&quot;: &quot;catalogs/customer-success-playbooks/catalog.manifest.json&quot;,\n      &quot;instancePath&quot;: &quot;/workflows/0/id&quot;,\n      &quot;ruleId&quot;: &quot;AUT-SEM-001&quot;,\n      &quot;relatedArtifactPath&quot;: &quot;catalogs/customer-success-playbooks/lead-intake/workflow.manifest.json&quot;,\n      &quot;expected&quot;: &quot;lead-intake-v2&quot;,\n      &quot;actual&quot;: &quot;lead-intake&quot;\n    }\n  ]\n}\n</code></pre>\n<hr />\n<h3>13. Publication Derivation Rules</h3>\n<p><code>feed.json</code> is the publication profile for published process packages.</p>\n<p>It is derived output. It MUST NOT be treated as independently authored truth for the source contract.</p>\n<h4>13.1 Deterministic field mappings</h4>\n<p>When a conforming publisher derives one <code>feedItem</code> from one valid source catalog and no separate publication profile supplies overriding metadata:</p>\n<ol>\n<li>root <code>catalogId</code> and <code>manifest.catalogId</code> MUST be derived from <code>catalog.manifest.json.id</code>,</li>\n<li>root <code>version</code> and <code>manifest.version</code> MUST be derived from the published package version,</li>\n<li><code>manifest.contractVersion</code> MUST be set to <code>1.0.0</code>,</li>\n<li><code>manifest.displayName</code> MUST be derived from <code>catalog.manifest.json.name</code>,</li>\n<li><code>manifest.description</code> MUST be derived from <code>catalog.manifest.json.description</code>,</li>\n<li>root <code>displayName</code> and root <code>description</code>, when present, MUST equal the manifest values,</li>\n<li><code>manifest.workflows[]</code> MUST be emitted in the same order as the source catalog workflow references,</li>\n<li>each <code>manifest.workflows[].workflowId</code> MUST be derived from the referenced workflow manifest <code>id</code>,</li>\n<li>each <code>manifest.workflows[].title</code> MUST be derived from the referenced workflow manifest <code>name</code>,</li>\n<li>each <code>manifest.workflows[].relativePath</code> MUST default to the catalog workflow reference <code>path</code>,</li>\n<li><code>manifest.supportAssets[]</code> MUST be derived from every declared <code>scriptPath</code> in workflow order, then step order,</li>\n<li>each derived support-asset <code>assetId</code> MUST be <code>&lt;workflow-id&gt;-&lt;step-id&gt;-script</code>,</li>\n<li>each derived support-asset <code>relativePath</code> MUST default to the source <code>scriptPath</code>,</li>\n<li>each derived support-asset <code>description</code> MUST be <code>Supporting script for step \"&lt;step title&gt;\" in workflow \"&lt;workflow name&gt;\".</code>,</li>\n<li><code>packageSha256</code> MUST be computed over the exact bytes of the published zip artifact,</li>\n<li><code>publishedOnUtc</code> at both the root and manifest levels MUST be UTC timestamps with a trailing <code>Z</code>.</li>\n</ol>\n<h4>13.2 Optional publication-only metadata</h4>\n<p>The following feed fields are publication-only metadata and are OPTIONAL in v1.0.0 unless a separate publication profile or publisher policy supplies them:</p>\n<ol>\n<li><code>author</code></li>\n<li><code>organization</code></li>\n<li><code>categories</code></li>\n<li><code>tags</code></li>\n<li><code>installationSummary</code></li>\n</ol>\n<p>When duplicated at both the root feed-item level and the embedded manifest level, they MUST remain equal.</p>\n<h4>13.3 Ordering and uniqueness</h4>\n<p>A conforming publisher MUST:</p>\n<ol>\n<li>reject duplicate <code>(catalogId, version)</code> tuples within one generated feed,</li>\n<li>serialize the top-level feed array in ascending order by <code>catalogId</code>, then by Semantic Version precedence of <code>version</code>,</li>\n<li>preserve authored order for workflow-derived entries,</li>\n<li>preserve derived workflow/step order for support assets unless a separate publication profile defines another deterministic order.</li>\n</ol>\n<p>For v1.0.0, <code>downloadUrl</code> remains the historical field name even though the value is package-relative rather than an absolute URL.</p>\n<hr />\n<h3>14. Artifact Authoring Profiles</h3>\n<p>Artifact authoring profiles in this domain MUST be definitive. If a language, status value, date rule, section count, branch type, approval stage, or evidence requirement can be fixed by the standard, it MUST be fixed directly in schema constraints rather than inferred from example documents.</p>\n<p>Example documents MAY inform only business-domain vocabulary, actor labels, decision criteria, and operational content that the governing specifications cannot already determine.</p>\n<h4>14.1 <code>catalog.manifest.json</code></h4>\n<p>A conforming source <code>catalog.manifest.json</code> MUST define:</p>\n<ol>\n<li><code>$schema</code></li>\n<li><code>id</code></li>\n<li><code>version</code></li>\n<li><code>name</code></li>\n<li><code>description</code></li>\n<li><code>workflows</code></li>\n</ol>\n<p>It MAY define:</p>\n<ol>\n<li><code>sourceRepository</code></li>\n<li><code>exportedAt</code></li>\n<li><code>sourcePlugin</code></li>\n<li><code>pluginManifestPath</code></li>\n<li><code>skillManifestPath</code></li>\n<li><code>workflowBundlePath</code></li>\n</ol>\n<h4>14.2 <code>workflow.manifest.json</code></h4>\n<p>A conforming source <code>workflow.manifest.json</code> MUST define:</p>\n<ol>\n<li><code>$schema</code></li>\n<li><code>id</code></li>\n<li><code>version</code></li>\n<li><code>name</code></li>\n<li><code>description</code></li>\n<li><code>steps</code></li>\n</ol>\n<p>Workflow <code>steps[]</code> MUST preserve execution order exactly as authored.</p>\n<p>When a workflow can branch or conditionally require later sections, the schema MUST define the gating fields, allowed branch types, and inclusion or exclusion rules explicitly so validators can determine which sections are valid without human guesswork.</p>\n<p>Each step MUST define:</p>\n<ol>\n<li><code>id</code></li>\n<li><code>title</code></li>\n<li><code>questionnairePath</code></li>\n</ol>\n<p>Each step MAY define:</p>\n<ol>\n<li><code>summary</code></li>\n<li><code>scriptPath</code></li>\n</ol>\n<p>In v1.0.0, <code>scriptPath</code> remains a PowerShell-shaped adjunct path ending in <code>script.ps1</code>. That is an explicit v1 scope constraint, not a claim of cross-runtime execution neutrality for script assets.</p>\n<h4>14.3 <code>*.process.json</code></h4>\n<p>A conforming <code>*.process.json</code> document MUST define:</p>\n<ol>\n<li><code>$schema</code></li>\n<li><code>questionnaireId</code></li>\n<li><code>title</code></li>\n<li><code>entryQuestionId</code></li>\n<li><code>questions</code></li>\n</ol>\n<p>It MAY define:</p>\n<ol>\n<li><code>summary</code></li>\n<li><code>instructions</code></li>\n<li><code>format</code></li>\n</ol>\n<p>When a workflow step uses one <code>*.process.json</code> document as its source artifact, the document is a question-driven step contract rather than a free-form questionnaire note.</p>\n<p>Each question MUST define:</p>\n<ol>\n<li><code>questionId</code></li>\n<li><code>title</code></li>\n<li><code>answerType</code></li>\n<li><code>outputKey</code></li>\n<li><code>conversation</code> as a JSON array containing one or more JSONL-style record objects with <code>messages[]</code></li>\n<li><code>routing</code></li>\n<li><code>for-ai</code></li>\n</ol>\n<p>Questions with answer types <code>select-one</code> or <code>select-many</code> MUST also define explicit <code>options[]</code>.</p>\n<p><code>instructions</code> remains an optional Markdown field for step-level operating notes, but question-specific capture rules, answer typing, output evaluation, and next-question selection belong in the typed question objects.</p>\n<p>Each completed user conversation is the evidence the AI uses to derive the question output by following the question's <code>for-ai</code> guidance and routing rules.</p>\n<p>In v1.0.0, omitted <code>format</code> values are treated as <code>markdown</code>. The field remains in the schema for explicitness and machine-readability when <code>instructions</code> is present.</p>\n<h4>14.4 Companion adjunct profiles</h4>\n<p><code>plugin.manifest.json</code>, <code>skill.manifest.json</code>, and <code>exec.workflow.json</code> remain optional companion adjunct profiles in v1.0.0.</p>\n<p>They MUST NOT replace the source authority of:</p>\n<ol>\n<li><code>catalog.manifest.json</code></li>\n<li><code>workflow.manifest.json</code></li>\n<li><code>*.process.json</code></li>\n</ol>\n<hr />\n<h3>15. Security Considerations</h3>\n<p>This section is normative.</p>\n<p>Implementations and authors MUST account for at least the following risks:</p>\n<ol>\n<li>path traversal through crafted relative paths,</li>\n<li>symlink or junction escape outside the catalog root,</li>\n<li>schema poisoning through untrusted remote schema resolution,</li>\n<li>untrusted questionnaire content that may instruct unsafe actions,</li>\n<li>untrusted supporting scripts,</li>\n<li>malicious package substitution or hash mismatch,</li>\n<li>publication drift between derived artifacts and their source catalog,</li>\n<li>denial of service through extremely large files, deeply nested JSON, or pathological schemas,</li>\n<li>tool/runtime permission overreach by execution-oriented implementations.</li>\n</ol>\n<p>Conforming validators and publishers MUST:</p>\n<ol>\n<li>validate path references according to Section 10.4,</li>\n<li>reject references that escape the catalog root after canonicalization,</li>\n<li>fail closed when schema resolution is ambiguous or digest validation fails,</li>\n<li>avoid treating questionnaire content or scripts as trusted merely because they pass schema validation,</li>\n<li>treat <code>packageSha256</code> as an integrity field over exact artifact bytes,</li>\n<li>avoid granting network, filesystem, credential, or host-execution permissions solely because an artifact references them.</li>\n</ol>\n<hr />\n<h3>16. Privacy Considerations</h3>\n<p>This section is normative.</p>\n<p>The core contract defined here does not itself authorize access to private data sources.</p>\n<p>Implementations MUST assume that questionnaire content, summaries, publication descriptions, provenance fields, and example datasets may contain sensitive information.</p>\n<p>Implementations SHOULD:</p>\n<ol>\n<li>apply least-privilege access to any data consulted during authoring or execution,</li>\n<li>avoid leaking private repository paths or unpublished metadata into derived public artifacts,</li>\n<li>ensure that publication bundles and examples do not expose secrets, credentials, or internal-only source metadata,</li>\n<li>treat telemetry and execution logs as out of scope unless separately standardized and governed.</li>\n</ol>\n<hr />\n<h3>17. Versioning, Governance, and Reuse</h3>\n<h4>17.1 Status states</h4>\n<p>This Document Role family recognizes the following status states:</p>\n<ol>\n<li><code>draft</code></li>\n<li><code>stable</code></li>\n<li><code>deprecated</code></li>\n<li><code>obsolete</code></li>\n</ol>\n<p>v1.0.0 is <code>stable</code>.</p>\n<h4>17.2 Patch releases</h4>\n<p>Non-breaking clarifications and hardening changes MAY be released as patch versions.</p>\n<p>Patch releases MUST preserve:</p>\n<ol>\n<li>the core catalog -&gt; workflow -&gt; step model,</li>\n<li>canonical instance-validation schema <code>$id</code> values for the v1 line,</li>\n<li>existing conforming source artifact shapes unless a change is explicitly declared breaking.</li>\n</ol>\n<h4>17.3 Breaking changes</h4>\n<p>Breaking changes MUST use a new major version.</p>\n<p>Examples include:</p>\n<ol>\n<li>renaming canonical fields,</li>\n<li>removing integer-version compatibility,</li>\n<li>replacing the top-level <code>feed.json</code> array shape,</li>\n<li>changing the script model from the current PowerShell-shaped v1 constraint,</li>\n<li>eliminating duplicated identity fields such as <code>catalog.workflows[].id</code> or <code>questionnaireId</code>.</li>\n</ol>\n<h4>17.4 Reuse and redistribution</h4>\n<p>For this public Document Role family:</p>\n<ol>\n<li>published JSON Artifact Definitions MAY be mirrored and redistributed when attribution is preserved and the original public URL is referenced,</li>\n<li>published example artifacts MAY be reused and redistributed when attribution is preserved and the original public URL is referenced,</li>\n<li>published conformance test artifacts MAY be mirrored and incorporated into independent validator or publisher test suites with attribution,</li>\n<li>short quotations from the specification for implementation or review purposes are permitted with attribution,</li>\n<li>altered redistributions SHOULD clearly indicate that they are modified copies and MUST NOT be presented as the canonical Cuddler publication.</li>\n</ol>\n<hr />\n<h3>18. Informative Appendices</h3>\n<h4>18.1 Example bundle</h4>\n<p>The machine-readable example bundle for this release is published as <code>examples.manifest.json</code>.</p>\n<p>The examples intentionally use source/package version <code>2.3.0</code> and feed <code>contractVersion</code> <code>1.0.0</code> so readers can distinguish artifact/package versioning from Document Role versioning.</p>\n<h4>18.2 Conformance fixtures</h4>\n<p>The conformance test bundle for this release is published under <code>tests/</code> with a machine-readable index at <code>tests/manifest.json</code>.</p>\n<p>Every public rule identifier in Section 12.2 is exercised by at least one published fixture.</p>\n<h4>18.3 AI implementation notes</h4>\n<p>The v1.0.0 public surface is intentionally sufficient for:</p>\n<ol>\n<li>schema discovery,</li>\n<li>artifact discovery,</li>\n<li>core source authoring,</li>\n<li>validation,</li>\n<li>publication derivation,</li>\n<li>machine-readable fixture discovery.</li>\n</ol>\n<p>The following execution-oriented surfaces remain intentionally out of scope for v1.0.0 and are candidates for a future additive release:</p>\n<ol>\n<li>cross-step or runtime step inputs and outputs beyond question-level outputs,</li>\n<li>cross-step state handoff semantics,</li>\n<li>capability and permission declarations,</li>\n<li>retry, timeout, and idempotence semantics,</li>\n<li>machine-readable execution-state persistence.</li>\n</ol>",
    "execution": {
      "implementerRequirements": [
        "Treat this Document Role as the governing contract for the Workflow domain. The shared Artifact Specification defines how Workflow Artifact Definitions are authored, while this document supplies the Process-specific drafting brief.",
        "Author well-informed <code>for-ai</code> arrays on schema nodes. Consumers of Cuddler standards should parse and follow that guidance when preparing Data, Template, and Process values, and each Alpaca-format entry should carry <code>instruction</code>, <code>input</code>, and <code>output</code> fields.",
        "Prefer definitive Process schema constraints whenever a rule is knowable: fix language, meta.status, date or date-time handling, identifier formats, path rules, exact workflow or step counts, file-shape limits, and section cardinality in schema logic instead of leaving them open to examples.",
        "For workflow steps backed by questionnaires, define typed questions with explicit answer types from select-one, select-many, number, short-text, long-text, date, and percentage, store conversation as a JSON array of JSONL-style record objects, publish question-level for-ai evaluation guidance, and make next-question and next-step routing deterministic so consumers can collect completed conversations and derive normalized question outputs.",
        "When one answer determines whether another section appears, encode that dependency with explicit discriminator fields and JSON Schema conditionals such as if/then/else, dependentRequired, or dependentSchemas instead of relying on narrative instructions.",
        "Do not infer optionality, alternate branch sets, or broader workflow shapes from missing or conflicting examples; keep those conflicts in a brief unresolved-assumptions note outside the schema.",
        "Ensure every Artifact Definition classified into this domain also conforms to the shared Artifact Specification and identifies both governing documents explicitly.",
        "Preserve the catalog-to-workflow-to-step model while supporting complex standard operating procedures or business processes through typed branching, approvals, exceptions, roles, and evidence structures, and treat real operational Artifact Documents as confidential by default unless a public example is intentionally published."
      ],
      "validationWorkflow": [
        "Resolve the declared schema, run JSON Schema validation, then run deterministic semantic validation for cross-file and publication rules, then emit diagnostics.",
        "Fail authoring-profile validation when a required schema-node <code>for-ai</code> array is missing, malformed, or empty where the governing standards require one.",
        "Fail when *.process.json question ids, entryQuestionId, answer-type-specific option requirements, question-level for-ai evaluation guidance, or routing targets drift from the v1.0.0 contract.",
        "Fail when identifiers, prompts, workflow references, conditional section gates, package metadata, feed derivation, or publication bundle rules drift from the v1.0.0 contract.",
        "Use the published diagnostics schema, semantic rules, conformance manifest, and test fixtures to keep validator and publisher behavior stable, and treat user-provided examples as supporting business-domain structure rather than replacement rules."
      ],
      "publicationNotes": [
        "Publish the canonical self-contained normative document as document-role-specification.json beside the supporting schemas, manifests, examples, and tests.",
        "Publish AI-facing schema-node guidance in <code>for-ai</code> Alpaca arrays instead of relying on JSON Schema <code>description</code> as the instruction channel.",
        "For workflow publications that include questionnaire-backed steps, publish typed questionnaires whose question nodes carry answer types, conversation stored as a JSON array of JSONL-style record objects, question-level for-ai guidance, and routing rules.",
        "State the exact canonical schema-file inventory and what each published file validates whenever a Process Artifact Definition bundle contains multiple machine-readable files.",
        "Do not publish separate Markdown or HTML prose documents for this process Document Role family.",
        "Preserve attribution and include the original public URL when this Document Role, the Artifact Specification, or domain-classified Artifact Definitions are reused or adapted."
      ]
    },
    "artifactGroups": [
      {
        "key": "normative-artifacts",
        "title": "Normative Artifacts",
        "items": [
          {
            "id": "document-role-specification-document",
            "title": "Document Role document",
            "role": "document-role-specification",
            "publicationClass": "normative",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/document-role-specification.json"
          },
          {
            "id": "catalog-schema",
            "title": "Catalog manifest schema",
            "role": "catalog-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/catalog.manifest.schema.json"
          },
          {
            "id": "workflow-schema",
            "title": "Workflow manifest schema",
            "role": "workflow-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/workflow.manifest.schema.json"
          },
          {
            "id": "questionnaire-schema",
            "title": "Questionnaire schema",
            "role": "questionnaire-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/questionnaire.schema.json"
          },
          {
            "id": "feed-schema",
            "title": "Feed schema",
            "role": "feed-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/feed.schema.json"
          },
          {
            "id": "plugin-manifest-schema",
            "title": "Plugin manifest schema",
            "role": "plugin-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/plugin.manifest.schema.json"
          },
          {
            "id": "skill-manifest-schema",
            "title": "Skill manifest schema",
            "role": "skill-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/skill.manifest.schema.json"
          },
          {
            "id": "exec-workflow-schema",
            "title": "Executable workflow schema",
            "role": "exec-workflow-schema",
            "publicationClass": "normative",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/exec.workflow.schema.json"
          }
        ]
      },
      {
        "key": "supporting-artifacts",
        "title": "Supporting Artifacts",
        "items": [
          {
            "id": "diagnostics-schema",
            "title": "Diagnostics schema",
            "role": "diagnostics-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/diagnostics.schema.json"
          },
          {
            "id": "semantic-rules",
            "title": "Semantic rules",
            "role": "semantic-rules",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/semantic-rules.json"
          },
          {
            "id": "semantic-rules-schema",
            "title": "Semantic rules schema",
            "role": "semantic-rules-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/semantic-rules.schema.json"
          },
          {
            "id": "artifact-index",
            "title": "Artifact index",
            "role": "artifact-index",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/specification.index.json"
          },
          {
            "id": "artifact-index-schema",
            "title": "Artifact index schema",
            "role": "artifact-index-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/specification.index.schema.json"
          },
          {
            "id": "conformance-manifest",
            "title": "Conformance manifest",
            "role": "conformance-manifest",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/conformance.manifest.json"
          },
          {
            "id": "conformance-manifest-schema",
            "title": "Conformance manifest schema",
            "role": "conformance-manifest-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/conformance.manifest.schema.json"
          },
          {
            "id": "tests-manifest",
            "title": "Conformance tests manifest",
            "role": "tests-manifest",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/tests/manifest.json"
          },
          {
            "id": "tests-manifest-schema",
            "title": "Conformance tests manifest schema",
            "role": "tests-manifest-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/tests.manifest.schema.json"
          },
          {
            "id": "implementation-template",
            "title": "Implementation record template",
            "role": "implementation-template",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/implementation-record.template.json"
          },
          {
            "id": "implementation-record-schema",
            "title": "Implementation record schema",
            "role": "implementation-record-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/implementation-record.schema.json"
          },
          {
            "id": "examples-manifest",
            "title": "Examples manifest",
            "role": "examples-manifest",
            "publicationClass": "supporting",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples.manifest.json"
          },
          {
            "id": "examples-manifest-schema",
            "title": "Examples manifest schema",
            "role": "examples-manifest-schema",
            "publicationClass": "supporting",
            "mediaType": "application/schema+json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples.manifest.schema.json"
          }
        ]
      },
      {
        "key": "example-artifacts",
        "title": "Example Artifacts",
        "items": [
          {
            "id": "feed-example",
            "title": "Feed example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/feed.example.json"
          },
          {
            "id": "catalog-example",
            "title": "Customer success catalog example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/customer-success-playbooks/catalog.manifest.json"
          },
          {
            "id": "workflow-example",
            "title": "Lead intake workflow example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/customer-success-playbooks/lead-intake/workflow.manifest.json"
          },
          {
            "id": "capture-context-questionnaire-example",
            "title": "Capture context questionnaire example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/customer-success-playbooks/lead-intake/capture-context.process.json"
          },
          {
            "id": "draft-follow-up-questionnaire-example",
            "title": "Draft follow-up questionnaire example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "application/json",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/customer-success-playbooks/lead-intake/draft-follow-up.process.json"
          },
          {
            "id": "draft-follow-up-script-example",
            "title": "Draft follow-up script example",
            "role": "example",
            "publicationClass": "example",
            "mediaType": "text/plain",
            "url": "https://www.cuddler.dev/standards/document-role/process/v1.0.0/examples/customer-success-playbooks/lead-intake/draft-follow-up/script.ps1"
          }
        ]
      }
    ],
    "sectionSummaries": [
      {
        "key": "overview",
        "title": "Overview",
        "summary": "Defines the Process-governed authoring brief as a single self-contained normative publication for catalog-workflow-step structure, conditional section rules, validation, and publication-ready process artifacts."
      },
      {
        "key": "scope",
        "title": "Scope",
        "summary": "Explains the process source model, identifier and path rules, publication artifacts, diagnostics, conformance classes, non-goals, and fixed schema constraints a Process Artifact Definition must cover, including explicit metadata values, conditional section gates, branching workflow structures, and exact cardinality rules when knowable."
      },
      {
        "key": "implementation",
        "title": "Implementation",
        "summary": "Tells schema authors, validators, and publishers how to interpret core artifacts, adjunct profiles, deterministic section-inclusion logic, and feed derivation rules when drafting or enforcing the family with strict schema rules and without widening the contract to absorb example drift."
      },
      {
        "key": "validation",
        "title": "Validation",
        "summary": "Requires schema resolution and validation first, deterministic semantic and conditional-gating checks second, and stable rule identifiers for cross-file failures."
      },
      {
        "key": "artifacts",
        "title": "Artifacts",
        "summary": "Identifies the supporting manifests, examples, tests, and registries that can guide drafting without replacing the normative contract inside the Document Role document."
      },
      {
        "key": "security",
        "title": "Security",
        "summary": "Includes the normative security and privacy expectations needed to author and publish process packages safely without hidden assumptions."
      },
      {
        "key": "change-management",
        "title": "Change Management",
        "summary": "Captures versioning, patch-release constraints, breaking-change boundaries, and reuse expectations inside the canonical versioned document."
      },
      {
        "key": "references",
        "title": "References",
        "summary": "Provides the RFC and JSON Schema references needed to interpret identifiers, paths, pointers, media types, and publication rules."
      }
    ],
    "references": {
      "normative": [
        {
          "title": "BCP 14 / RFC 2119 / RFC 8174",
          "locator": "Requirement language"
        },
        {
          "title": "RFC 3986",
          "locator": "URI Generic Syntax"
        },
        {
          "title": "RFC 6570",
          "locator": "URI Template"
        },
        {
          "title": "RFC 6901",
          "locator": "JSON Pointer"
        },
        {
          "title": "RFC 7763",
          "locator": "text/markdown media type"
        },
        {
          "title": "JSON Schema Draft 2020-12 Core",
          "locator": "Core vocabulary"
        },
        {
          "title": "JSON Schema Draft 2020-12 Validation",
          "locator": "Validation vocabulary"
        },
        {
          "title": "JSON Schema Draft 2020-12 Recommended Output",
          "locator": "Recommended output vocabulary"
        }
      ],
      "informative": [
        {
          "title": "Template Document Role v1.0.0",
          "locator": "https://www.cuddler.dev/standards/document-role/template/"
        },
        {
          "title": "Data Document Role v1.0.0",
          "locator": "https://www.cuddler.dev/standards/document-role/data/"
        }
      ]
    }
  }
}




