Skip to content

ordered flexible order

Type: document

Signature: md.document(shape, { ordered: false })

What It Is

ordered: false disables anchored section precheck and lets extraction proceed without sequence enforcement. In this mode, duplicated or reordered anchored headings do not automatically produce section_order_mismatch or duplicate_section at document level. The parser still validates matched section content using the rules declared in each section schema.

When to Use

Use flexible order for collaborative authoring where sections move during drafting, localization, or automated generation. It is useful when consumers care about typed values but do not depend on canonical heading sequence as a business rule. If sequence must signal process state, migrate to strict order to fail fast on layout drift.

md.document(shape, { ordered: false })

Input Markdown

md
# RUNBOOK: No Order Guard

## DETAILS

Operational details.

## META

- Service: Fraud API

## DETAILS

Duplicate details block.

Schema

ts
import { md } from '@markschema/mdshape'

const schema = md.document(
  {
    title: md.heading(1),
    meta: md.section('META').fields({
      Service: md.string().min(3),
    }),
    details: md.section('DETAILS').paragraphs([md.string().min(10)]),
  },
  { ordered: false },
)

Result

Success

json
{
  "success": true,
  "data": {
    "title": "RUNBOOK: No Order Guard",
    "meta": {
      "Service": "Fraud API"
    },
    "details": [
      "Operational details."
    ]
  }
}

Error

Failure trigger: remove the top h1 title; the parse fails with missing_heading, which is unrelated to section ordering mode.

json
{
  "success": false,
  "error": {
    "issues": [
      {
        "code": "missing_heading",
        "message": "Missing heading with depth 1",
        "path": [
          "title"
        ],
        "line": 1,
        "position": {
          "start": {
            "line": 1,
            "column": 1
          }
        }
      }
    ]
  }
}