Skip to content

Generated from corpus/lines/editorial/workflows/production.yml. Do not edit by hand — run python scripts/generate-corpus-docs.py.

corpus/lines/editorial/workflows/production.yml

Title / id: workflow.editorial

id: workflow.editorial
status: active
line: editorial
stages:
- id: assign
  entry:
  - An Editorial workstream has an audience and intended outcome.
  bindings:
  - inv.editorial.desk
  roles:
  - role.editor-in-chief
  - role.desk-editor
  artifacts:
  - editorial.assignment
  evidence:
  - Desk
  - angle
  - audience
  - format
  - deadline
  exit:
  - A responsible author and review path are assigned.
  next_stages:
  - report
  validation:
    mode: judgment
    checks:
    - angle is distinct
    - ownership and deadline are explicit
    on_gap: gap.stage.editorial.assign
  recovery:
    action: remain_at_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: report
  entry:
  - Assignment and research depth are defined.
  bindings:
  - inv.editorial.research-depth
  roles:
  - role.reporter
  - role.researcher
  artifacts:
  - editorial.source-file
  evidence:
  - Sources
  - notes
  - data
  - uncertainties
  - conflicts
  exit:
  - Material claims have attributable support or named gaps.
  next_stages:
  - draft
  validation:
    mode: judgment
    checks:
    - primary sources are preferred
    - conflicts and missing evidence remain visible
    on_gap: gap.stage.editorial.report
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: draft
  entry:
  - Reporting evidence and the intended structure are available.
  bindings:
  - inv.editorial.time-model
  roles:
  - role.reporter
  artifacts:
  - editorial.draft
  evidence:
  - Draft body
  - citations
  - disclosed assumptions
  exit:
  - A complete draft addresses the assignment without fabricated claims.
  next_stages:
  - edit
  validation:
    mode: judgment
    checks:
    - claims trace to sources
    - uncertainty is expressed accurately
    on_gap: gap.stage.editorial.draft
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: edit
  entry:
  - A complete draft and assignment are available.
  bindings: []
  roles:
  - role.copy-editor
  artifacts:
  - editorial.edited-draft
  evidence:
  - Structural edits
  - copy edits
  - unresolved queries
  exit:
  - The piece meets structure, clarity, tone, and format requirements.
  next_stages:
  - fact-check
  validation:
    mode: judgment
    checks:
    - editorial queries are resolved or explicitly blocking
    on_gap: gap.stage.editorial.edit
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: fact-check
  entry:
  - Edited draft and source file are available.
  bindings: []
  roles:
  - role.fact-checker
  artifacts:
  - editorial.fact-check-log
  evidence:
  - Claim-by-claim source mapping
  - corrections
  - unresolved claims
  exit:
  - Every material factual claim is supported, qualified, or removed.
  next_stages:
  - localize
  validation:
    mode: deterministic
    checks:
    - material claims have valid sources
    - prohibited fabrication checks pass
    on_gap: gap.stage.editorial.fact-check
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: localize
  entry:
  - Source edition is fact-checked and target locales are selected.
  bindings:
  - inv.editorial.locales
  roles:
  - role.translator
  artifacts:
  - editorial.localized-editions
  evidence:
  - Authored locale files
  - terminology decisions
  - locale review
  exit:
  - Each locale preserves meaning and passes locale-specific review.
  next_stages:
  - stage
  validation:
    mode: judgment
    checks:
    - all selected locales exist
    - links and metadata resolve
    on_gap: gap.stage.editorial.localize
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: stage
  entry:
  - Fact-checked copy and any required locales are complete.
  bindings: []
  roles:
  - role.copy-editor
  - role.publisher
  artifacts:
  - editorial.staged-release
  evidence:
  - Rendered preview
  - metadata
  - links
  - assets
  exit:
  - The staged artifact matches approved copy and passes presentation checks.
  next_stages:
  - publish
  validation:
    mode: deterministic
    checks:
    - render succeeds
    - links, metadata, and assets validate
    on_gap: gap.stage.editorial.stage
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: publish
  entry:
  - Staged release is approved for an exact channel and target.
  bindings:
  - inv.editorial.publish
  roles:
  - role.publisher
  artifacts:
  - editorial.publication-record
  evidence:
  - Published URL
  - revision
  - timestamp
  - post-publish checks
  exit:
  - The approved revision is publicly reachable and verified.
  next_stages:
  - update
  validation:
    mode: deterministic
    checks:
    - published revision matches staged revision
    - URL and critical assets respond
    on_gap: gap.stage.editorial.publish
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
- id: update
  entry:
  - A correction, expiry trigger, or material new evidence exists.
  bindings: []
  roles:
  - role.editor-in-chief
  - role.publisher
  artifacts:
  - editorial.update-record
  evidence:
  - Change rationale
  - revised sources
  - before/after revision
  exit:
  - The publication is corrected, updated, or retired with history retained.
  next_stages: []
  validation:
    mode: judgment
    checks:
    - material changes are attributable
    - correction visibility matches impact
    on_gap: gap.stage.editorial.update
  recovery:
    action: return_to_previous_stage
    preserve:
    - artifacts
    - evidence
    - decision_log
schema_version: corpus-unit.v2
kind: workflow
version: 1.0.0
layer: organization
depends_on:
- id: core.stage-contract
  version: ^1.0.0
- id: org.roles
  version: ^1.0.0