Run document sections as hierarchical workflow targets #412

Description

@taras

Story

As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

Example

# Project
prepare the project
## Test
run the tests
## Verification
verify the project
xmd targets README.md
README.md#Test
README.md#Verification
xmd run README.md#Verification

The selected execution is equivalent to this projected document:

# Project
prepare the project
## Verification
verify the project

The root preparation and the selected section run. The Test sibling is absent and does not execute.

An unqualified invocation retains today's whole-document behavior:

xmd run README.md

There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

xmd run README.md#Test
xmd workflow start README.md#Release/Publish

Section execution

A document's root-flow Markdown headings form a hierarchy.

Selecting a section executes:

  1. the document preamble;
  2. the direct content of each ancestor section along the selected path; and
  3. the selected section's complete subtree in document order.

It excludes every sibling subtree along that path.

For example:

# Project
prepare the project
## Release
prepare the release
### Build
build artifacts
### Publish
publish artifacts

README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

Target discovery and matching

xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

## Review
<Prompt>
 ## Instructions
Check the implementation carefully.
</Prompt>

This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

The fragment is a hierarchical glob over normalized, statically visible heading text:

  • / separates heading levels;
  • literals match heading text;
  • * matches within one hierarchy level and never crosses /;
  • ** matches recursively across zero or more hierarchy levels.

Examples:

README.md#Test
README.md#Release/*
README.md#Ver*
README.md#**/Verification

In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

Scope and root contract

Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

The engine:

  1. loads and parses the complete root definition;
  2. resolves the target without executing the document;
  3. projects the ancestor path and selected subtree; and
  4. validates and executes the projected body using the existing root component contract.

Consequences:

  • root frontmatter and component resolution still define the document;
  • root props are available unchanged;
  • the root return schema still applies;
  • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
  • every target in a value root satisfies the same declared return schema; and
  • an unqualified run validates and executes the complete body as it does today.

Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

Shared API and durable identity

Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

descriptor version
+ object kind
+ object format
+ immutable object ID
+ repository-relative root document path
+ resolved exact target path

For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

Markdown links

A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

Future fan-out

A selector that resolves multiple paths fails in this story.

A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

Acceptance

  • xmd run README.md retains whole-document behavior.
  • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
  • Selecting a non-leaf section executes all of its descendants in document order.
  • Selected output retains the ancestor and target headings.
  • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
  • xmd targets lists canonical references without executing the document.
  • Only static root-flow headings are addressable.
  • Literal, *, and ** hierarchical matching obey the exact-one rule.
  • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
  • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
  • The selected projection retains the root's props, frontmatter, return, and output contracts.
  • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
  • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
  • Resume uses the recorded immutable definition and target.
  • Markdown links remain passive.
  • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
  • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

Related work

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Run document sections as hierarchical workflow targets #412

      Description

      @taras

      Story

      As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

      README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

      Example

      # Project
      prepare the project
      ## Test
      run the tests
      ## Verification
      verify the project
      xmd targets README.md
      README.md#Test
      README.md#Verification
      
      xmd run README.md#Verification

      The selected execution is equivalent to this projected document:

      # Project
      prepare the project
      ## Verification
      verify the project

      The root preparation and the selected section run. The Test sibling is absent and does not execute.

      An unqualified invocation retains today's whole-document behavior:

      xmd run README.md

      There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

      xmd run README.md#Test
      xmd workflow start README.md#Release/Publish

      Section execution

      A document's root-flow Markdown headings form a hierarchy.

      Selecting a section executes:

      1. the document preamble;
      2. the direct content of each ancestor section along the selected path; and
      3. the selected section's complete subtree in document order.

      It excludes every sibling subtree along that path.

      For example:

      # Project
      prepare the project
      ## Release
      prepare the release
      ### Build
      build artifacts
      ### Publish
      publish artifacts

      README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

      The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

      A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

      Target discovery and matching

      xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

      Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

      ## Review
      <Prompt>
       ## Instructions
      Check the implementation carefully.
      </Prompt>

      This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

      The fragment is a hierarchical glob over normalized, statically visible heading text:

      • / separates heading levels;
      • literals match heading text;
      • * matches within one hierarchy level and never crosses /;
      • ** matches recursively across zero or more hierarchy levels.

      Examples:

      README.md#Test
      README.md#Release/*
      README.md#Ver*
      README.md#**/Verification
      

      In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

      The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

      Scope and root contract

      Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

      The engine:

      1. loads and parses the complete root definition;
      2. resolves the target without executing the document;
      3. projects the ancestor path and selected subtree; and
      4. validates and executes the projected body using the existing root component contract.

      Consequences:

      • root frontmatter and component resolution still define the document;
      • root props are available unchanged;
      • the root return schema still applies;
      • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
      • every target in a value root satisfies the same declared return schema; and
      • an unqualified run validates and executes the complete body as it does today.

      Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

      Shared API and durable identity

      Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

      The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

      For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

      descriptor version
      + object kind
      + object format
      + immutable object ID
      + repository-relative root document path
      + resolved exact target path
      

      For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

      Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

      Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

      Markdown links

      A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

      An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

      Future fan-out

      A selector that resolves multiple paths fails in this story.

      A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

      Acceptance

      • xmd run README.md retains whole-document behavior.
      • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
      • Selecting a non-leaf section executes all of its descendants in document order.
      • Selected output retains the ancestor and target headings.
      • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
      • xmd targets lists canonical references without executing the document.
      • Only static root-flow headings are addressable.
      • Literal, *, and ** hierarchical matching obey the exact-one rule.
      • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
      • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
      • The selected projection retains the root's props, frontmatter, return, and output contracts.
      • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
      • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
      • Resume uses the recorded immutable definition and target.
      • Markdown links remain passive.
      • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
      • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

      Related work

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Run document sections as hierarchical workflow targets #412

          Description

          @taras

          Story

          As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

          README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

          Example

          # Project
          prepare the project
          ## Test
          run the tests
          ## Verification
          verify the project
          xmd targets README.md
          README.md#Test
          README.md#Verification
          
          xmd run README.md#Verification

          The selected execution is equivalent to this projected document:

          # Project
          prepare the project
          ## Verification
          verify the project

          The root preparation and the selected section run. The Test sibling is absent and does not execute.

          An unqualified invocation retains today's whole-document behavior:

          xmd run README.md

          There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

          xmd run README.md#Test
          xmd workflow start README.md#Release/Publish

          Section execution

          A document's root-flow Markdown headings form a hierarchy.

          Selecting a section executes:

          1. the document preamble;
          2. the direct content of each ancestor section along the selected path; and
          3. the selected section's complete subtree in document order.

          It excludes every sibling subtree along that path.

          For example:

          # Project
          prepare the project
          ## Release
          prepare the release
          ### Build
          build artifacts
          ### Publish
          publish artifacts

          README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

          The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

          A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

          Target discovery and matching

          xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

          Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

          ## Review
          <Prompt>
           ## Instructions
          Check the implementation carefully.
          </Prompt>

          This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

          The fragment is a hierarchical glob over normalized, statically visible heading text:

          • / separates heading levels;
          • literals match heading text;
          • * matches within one hierarchy level and never crosses /;
          • ** matches recursively across zero or more hierarchy levels.

          Examples:

          README.md#Test
          README.md#Release/*
          README.md#Ver*
          README.md#**/Verification
          

          In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

          The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

          Scope and root contract

          Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

          The engine:

          1. loads and parses the complete root definition;
          2. resolves the target without executing the document;
          3. projects the ancestor path and selected subtree; and
          4. validates and executes the projected body using the existing root component contract.

          Consequences:

          • root frontmatter and component resolution still define the document;
          • root props are available unchanged;
          • the root return schema still applies;
          • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
          • every target in a value root satisfies the same declared return schema; and
          • an unqualified run validates and executes the complete body as it does today.

          Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

          Shared API and durable identity

          Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

          The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

          For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

          descriptor version
          + object kind
          + object format
          + immutable object ID
          + repository-relative root document path
          + resolved exact target path
          

          For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

          Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

          Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

          Markdown links

          A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

          An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

          Future fan-out

          A selector that resolves multiple paths fails in this story.

          A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

          Acceptance

          • xmd run README.md retains whole-document behavior.
          • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
          • Selecting a non-leaf section executes all of its descendants in document order.
          • Selected output retains the ancestor and target headings.
          • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
          • xmd targets lists canonical references without executing the document.
          • Only static root-flow headings are addressable.
          • Literal, *, and ** hierarchical matching obey the exact-one rule.
          • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
          • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
          • The selected projection retains the root's props, frontmatter, return, and output contracts.
          • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
          • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
          • Resume uses the recorded immutable definition and target.
          • Markdown links remain passive.
          • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
          • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

          Related work

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Run document sections as hierarchical workflow targets #412

              Description

              @taras

              Story

              As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

              README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

              Example

              # Project
              prepare the project
              ## Test
              run the tests
              ## Verification
              verify the project
              xmd targets README.md
              README.md#Test
              README.md#Verification
              
              xmd run README.md#Verification

              The selected execution is equivalent to this projected document:

              # Project
              prepare the project
              ## Verification
              verify the project

              The root preparation and the selected section run. The Test sibling is absent and does not execute.

              An unqualified invocation retains today's whole-document behavior:

              xmd run README.md

              There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

              xmd run README.md#Test
              xmd workflow start README.md#Release/Publish

              Section execution

              A document's root-flow Markdown headings form a hierarchy.

              Selecting a section executes:

              1. the document preamble;
              2. the direct content of each ancestor section along the selected path; and
              3. the selected section's complete subtree in document order.

              It excludes every sibling subtree along that path.

              For example:

              # Project
              prepare the project
              ## Release
              prepare the release
              ### Build
              build artifacts
              ### Publish
              publish artifacts

              README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

              The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

              A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

              Target discovery and matching

              xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

              Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

              ## Review
              <Prompt>
               ## Instructions
              Check the implementation carefully.
              </Prompt>

              This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

              The fragment is a hierarchical glob over normalized, statically visible heading text:

              • / separates heading levels;
              • literals match heading text;
              • * matches within one hierarchy level and never crosses /;
              • ** matches recursively across zero or more hierarchy levels.

              Examples:

              README.md#Test
              README.md#Release/*
              README.md#Ver*
              README.md#**/Verification
              

              In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

              The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

              Scope and root contract

              Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

              The engine:

              1. loads and parses the complete root definition;
              2. resolves the target without executing the document;
              3. projects the ancestor path and selected subtree; and
              4. validates and executes the projected body using the existing root component contract.

              Consequences:

              • root frontmatter and component resolution still define the document;
              • root props are available unchanged;
              • the root return schema still applies;
              • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
              • every target in a value root satisfies the same declared return schema; and
              • an unqualified run validates and executes the complete body as it does today.

              Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

              Shared API and durable identity

              Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

              The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

              For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

              descriptor version
              + object kind
              + object format
              + immutable object ID
              + repository-relative root document path
              + resolved exact target path
              

              For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

              Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

              Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

              Markdown links

              A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

              An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

              Future fan-out

              A selector that resolves multiple paths fails in this story.

              A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

              Acceptance

              • xmd run README.md retains whole-document behavior.
              • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
              • Selecting a non-leaf section executes all of its descendants in document order.
              • Selected output retains the ancestor and target headings.
              • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
              • xmd targets lists canonical references without executing the document.
              • Only static root-flow headings are addressable.
              • Literal, *, and ** hierarchical matching obey the exact-one rule.
              • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
              • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
              • The selected projection retains the root's props, frontmatter, return, and output contracts.
              • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
              • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
              • Resume uses the recorded immutable definition and target.
              • Markdown links remain passive.
              • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
              • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

              Related work

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Run document sections as hierarchical workflow targets #412

                  Description

                  @taras

                  Story

                  As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

                  README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

                  Example

                  # Project
                  prepare the project
                  ## Test
                  run the tests
                  ## Verification
                  verify the project
                  xmd targets README.md
                  README.md#Test
                  README.md#Verification
                  
                  xmd run README.md#Verification

                  The selected execution is equivalent to this projected document:

                  # Project
                  prepare the project
                  ## Verification
                  verify the project

                  The root preparation and the selected section run. The Test sibling is absent and does not execute.

                  An unqualified invocation retains today's whole-document behavior:

                  xmd run README.md

                  There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

                  xmd run README.md#Test
                  xmd workflow start README.md#Release/Publish

                  Section execution

                  A document's root-flow Markdown headings form a hierarchy.

                  Selecting a section executes:

                  1. the document preamble;
                  2. the direct content of each ancestor section along the selected path; and
                  3. the selected section's complete subtree in document order.

                  It excludes every sibling subtree along that path.

                  For example:

                  # Project
                  prepare the project
                  ## Release
                  prepare the release
                  ### Build
                  build artifacts
                  ### Publish
                  publish artifacts

                  README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

                  The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

                  A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

                  Target discovery and matching

                  xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

                  Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

                  ## Review
                  <Prompt>
                   ## Instructions
                  Check the implementation carefully.
                  </Prompt>

                  This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

                  The fragment is a hierarchical glob over normalized, statically visible heading text:

                  • / separates heading levels;
                  • literals match heading text;
                  • * matches within one hierarchy level and never crosses /;
                  • ** matches recursively across zero or more hierarchy levels.

                  Examples:

                  README.md#Test
                  README.md#Release/*
                  README.md#Ver*
                  README.md#**/Verification
                  

                  In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

                  The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

                  Scope and root contract

                  Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

                  The engine:

                  1. loads and parses the complete root definition;
                  2. resolves the target without executing the document;
                  3. projects the ancestor path and selected subtree; and
                  4. validates and executes the projected body using the existing root component contract.

                  Consequences:

                  • root frontmatter and component resolution still define the document;
                  • root props are available unchanged;
                  • the root return schema still applies;
                  • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
                  • every target in a value root satisfies the same declared return schema; and
                  • an unqualified run validates and executes the complete body as it does today.

                  Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

                  Shared API and durable identity

                  Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

                  The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

                  For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

                  descriptor version
                  + object kind
                  + object format
                  + immutable object ID
                  + repository-relative root document path
                  + resolved exact target path
                  

                  For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

                  Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

                  Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

                  Markdown links

                  A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

                  An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

                  Future fan-out

                  A selector that resolves multiple paths fails in this story.

                  A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

                  Acceptance

                  • xmd run README.md retains whole-document behavior.
                  • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
                  • Selecting a non-leaf section executes all of its descendants in document order.
                  • Selected output retains the ancestor and target headings.
                  • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
                  • xmd targets lists canonical references without executing the document.
                  • Only static root-flow headings are addressable.
                  • Literal, *, and ** hierarchical matching obey the exact-one rule.
                  • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
                  • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
                  • The selected projection retains the root's props, frontmatter, return, and output contracts.
                  • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
                  • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
                  • Resume uses the recorded immutable definition and target.
                  • Markdown links remain passive.
                  • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
                  • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

                  Related work

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Run document sections as hierarchical workflow targets #412

                      Description

                      @taras

                      Story

                      As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

                      README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

                      Example

                      # Project
                      prepare the project
                      ## Test
                      run the tests
                      ## Verification
                      verify the project
                      xmd targets README.md
                      README.md#Test
                      README.md#Verification
                      
                      xmd run README.md#Verification

                      The selected execution is equivalent to this projected document:

                      # Project
                      prepare the project
                      ## Verification
                      verify the project

                      The root preparation and the selected section run. The Test sibling is absent and does not execute.

                      An unqualified invocation retains today's whole-document behavior:

                      xmd run README.md

                      There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

                      xmd run README.md#Test
                      xmd workflow start README.md#Release/Publish

                      Section execution

                      A document's root-flow Markdown headings form a hierarchy.

                      Selecting a section executes:

                      1. the document preamble;
                      2. the direct content of each ancestor section along the selected path; and
                      3. the selected section's complete subtree in document order.

                      It excludes every sibling subtree along that path.

                      For example:

                      # Project
                      prepare the project
                      ## Release
                      prepare the release
                      ### Build
                      build artifacts
                      ### Publish
                      publish artifacts

                      README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

                      The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

                      A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

                      Target discovery and matching

                      xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

                      Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

                      ## Review
                      <Prompt>
                       ## Instructions
                      Check the implementation carefully.
                      </Prompt>

                      This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

                      The fragment is a hierarchical glob over normalized, statically visible heading text:

                      • / separates heading levels;
                      • literals match heading text;
                      • * matches within one hierarchy level and never crosses /;
                      • ** matches recursively across zero or more hierarchy levels.

                      Examples:

                      README.md#Test
                      README.md#Release/*
                      README.md#Ver*
                      README.md#**/Verification
                      

                      In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

                      The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

                      Scope and root contract

                      Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

                      The engine:

                      1. loads and parses the complete root definition;
                      2. resolves the target without executing the document;
                      3. projects the ancestor path and selected subtree; and
                      4. validates and executes the projected body using the existing root component contract.

                      Consequences:

                      • root frontmatter and component resolution still define the document;
                      • root props are available unchanged;
                      • the root return schema still applies;
                      • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
                      • every target in a value root satisfies the same declared return schema; and
                      • an unqualified run validates and executes the complete body as it does today.

                      Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

                      Shared API and durable identity

                      Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

                      The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

                      For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

                      descriptor version
                      + object kind
                      + object format
                      + immutable object ID
                      + repository-relative root document path
                      + resolved exact target path
                      

                      For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

                      Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

                      Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

                      Markdown links

                      A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

                      An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

                      Future fan-out

                      A selector that resolves multiple paths fails in this story.

                      A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

                      Acceptance

                      • xmd run README.md retains whole-document behavior.
                      • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
                      • Selecting a non-leaf section executes all of its descendants in document order.
                      • Selected output retains the ancestor and target headings.
                      • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
                      • xmd targets lists canonical references without executing the document.
                      • Only static root-flow headings are addressable.
                      • Literal, *, and ** hierarchical matching obey the exact-one rule.
                      • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
                      • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
                      • The selected projection retains the root's props, frontmatter, return, and output contracts.
                      • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
                      • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
                      • Resume uses the recorded immutable definition and target.
                      • Markdown links remain passive.
                      • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
                      • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

                      Related work

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Run document sections as hierarchical workflow targets #412

                          Description

                          @taras

                          Story

                          As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

                          README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

                          Example

                          # Project
                          prepare the project
                          ## Test
                          run the tests
                          ## Verification
                          verify the project
                          xmd targets README.md
                          README.md#Test
                          README.md#Verification
                          
                          xmd run README.md#Verification

                          The selected execution is equivalent to this projected document:

                          # Project
                          prepare the project
                          ## Verification
                          verify the project

                          The root preparation and the selected section run. The Test sibling is absent and does not execute.

                          An unqualified invocation retains today's whole-document behavior:

                          xmd run README.md

                          There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

                          xmd run README.md#Test
                          xmd workflow start README.md#Release/Publish

                          Section execution

                          A document's root-flow Markdown headings form a hierarchy.

                          Selecting a section executes:

                          1. the document preamble;
                          2. the direct content of each ancestor section along the selected path; and
                          3. the selected section's complete subtree in document order.

                          It excludes every sibling subtree along that path.

                          For example:

                          # Project
                          prepare the project
                          ## Release
                          prepare the release
                          ### Build
                          build artifacts
                          ### Publish
                          publish artifacts

                          README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

                          The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

                          A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

                          Target discovery and matching

                          xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

                          Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

                          ## Review
                          <Prompt>
                           ## Instructions
                          Check the implementation carefully.
                          </Prompt>

                          This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

                          The fragment is a hierarchical glob over normalized, statically visible heading text:

                          • / separates heading levels;
                          • literals match heading text;
                          • * matches within one hierarchy level and never crosses /;
                          • ** matches recursively across zero or more hierarchy levels.

                          Examples:

                          README.md#Test
                          README.md#Release/*
                          README.md#Ver*
                          README.md#**/Verification
                          

                          In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

                          The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

                          Scope and root contract

                          Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

                          The engine:

                          1. loads and parses the complete root definition;
                          2. resolves the target without executing the document;
                          3. projects the ancestor path and selected subtree; and
                          4. validates and executes the projected body using the existing root component contract.

                          Consequences:

                          • root frontmatter and component resolution still define the document;
                          • root props are available unchanged;
                          • the root return schema still applies;
                          • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
                          • every target in a value root satisfies the same declared return schema; and
                          • an unqualified run validates and executes the complete body as it does today.

                          Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

                          Shared API and durable identity

                          Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

                          The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

                          For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

                          descriptor version
                          + object kind
                          + object format
                          + immutable object ID
                          + repository-relative root document path
                          + resolved exact target path
                          

                          For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

                          Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

                          Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

                          Markdown links

                          A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

                          An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

                          Future fan-out

                          A selector that resolves multiple paths fails in this story.

                          A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

                          Acceptance

                          • xmd run README.md retains whole-document behavior.
                          • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
                          • Selecting a non-leaf section executes all of its descendants in document order.
                          • Selected output retains the ancestor and target headings.
                          • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
                          • xmd targets lists canonical references without executing the document.
                          • Only static root-flow headings are addressable.
                          • Literal, *, and ** hierarchical matching obey the exact-one rule.
                          • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
                          • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
                          • The selected projection retains the root's props, frontmatter, return, and output contracts.
                          • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
                          • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
                          • Resume uses the recorded immutable definition and target.
                          • Markdown links remain passive.
                          • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
                          • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

                          Related work

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Run document sections as hierarchical workflow targets #412

                              Description

                              @taras

                              Story

                              As a project maintainer, I want sections of an ordinary README or executable Markdown document to be addressable and runnable, so one readable document can describe common preparation once and expose its sections as repeatable workflows.

                              README hierarchy already expresses composition. A selected section inherits the preparation written in its ancestor sections, while unrelated sibling sections do not run.

                              Example

                              # Project
                              prepare the project
                              ## Test
                              run the tests
                              ## Verification
                              verify the project
                              xmd targets README.md
                              README.md#Test
                              README.md#Verification
                              
                              xmd run README.md#Verification

                              The selected execution is equivalent to this projected document:

                              # Project
                              prepare the project
                              ## Verification
                              verify the project

                              The root preparation and the selected section run. The Test sibling is absent and does not execute.

                              An unqualified invocation retains today's whole-document behavior:

                              xmd run README.md

                              There is no separate --target option. The fragment is part of the document reference and works wherever a root document can be selected:

                              xmd run README.md#Test
                              xmd workflow start README.md#Release/Publish

                              Section execution

                              A document's root-flow Markdown headings form a hierarchy.

                              Selecting a section executes:

                              1. the document preamble;
                              2. the direct content of each ancestor section along the selected path; and
                              3. the selected section's complete subtree in document order.

                              It excludes every sibling subtree along that path.

                              For example:

                              # Project
                              prepare the project
                              ## Release
                              prepare the release
                              ### Build
                              build artifacts
                              ### Publish
                              publish artifacts

                              README.md#Release runs project preparation, release preparation, Build, and Publish. README.md#Release/Publish runs project preparation, release preparation, and Publish, but not Build.

                              The projected output retains the headings on the selected path. They remain passive Markdown and keep the emitted result readable and structurally coherent.

                              A single outermost heading is the document title and is omitted from target fragments. If a document has multiple outermost headings, none is an unambiguous title, so those heading names remain in their paths.

                              Target discovery and matching

                              xmd targets <document> lists all statically addressable heading paths. It does not infer whether a section contains effects: a prose-only target is valid and simply expands without producing durable effects.

                              Only headings authored in the root document's Markdown flow define targets. Headings nested inside component content do not:

                              ## Review
                              <Prompt>
                               ## Instructions
                              Check the implementation carefully.
                              </Prompt>

                              This document exposes README.md#Review, not README.md#Review/Instructions. Headings produced by components, expressions, or other expansion are not addressable. Target discovery is static and side-effect-free.

                              The fragment is a hierarchical glob over normalized, statically visible heading text:

                              • / separates heading levels;
                              • literals match heading text;
                              • * matches within one hierarchy level and never crosses /;
                              • ** matches recursively across zero or more hierarchy levels.

                              Examples:

                              README.md#Test
                              README.md#Release/*
                              README.md#Ver*
                              README.md#**/Verification
                              

                              In the initial contract, every selector must resolve to exactly one section. No match or multiple matches fails immediately and reports the matching or available canonical paths. Duplicate or ambiguous headings are not disambiguated with occurrence numbers; authors give them distinct structural paths.

                              The resolved exact heading path is canonical. The caller's glob is invocation metadata, not durable identity.

                              Scope and root contract

                              Targeting projects the root body before expansion. It does not create an implicit component or a second props model.

                              The engine:

                              1. loads and parses the complete root definition;
                              2. resolves the target without executing the document;
                              3. projects the ancestor path and selected subtree; and
                              4. validates and executes the projected body using the existing root component contract.

                              Consequences:

                              • root frontmatter and component resolution still define the document;
                              • root props are available unchanged;
                              • the root return schema still applies;
                              • <Return> and <Output> structural rules are checked against the selected projection, not skipped siblings;
                              • every target in a value root satisfies the same declared return schema; and
                              • an unqualified run validates and executes the complete body as it does today.

                              Skipped sibling sections contribute no output, bindings, effects, resources, or component invocations. A target cannot depend on a binding or side effect created by a skipped sibling. Shared preparation belongs in a common ancestor or reusable component.

                              Shared API and durable identity

                              Selection is a runtime-neutral root-document capability, not logic implemented only by the CLI.

                              The shared source and inspection APIs represent an optional target selector, resolve it through the same parser, and expose canonical targets for xmd targets and other hosts. File and inline source behavior must remain one coherent source model; a host does not inspect one definition and execute another.

                              For a retained workflow, the resolved exact target path extends the versioned workflow definition descriptor:

                              descriptor version
                              + object kind
                              + object format
                              + immutable object ID
                              + repository-relative root document path
                              + resolved exact target path
                              

                              For a Git definition, the immutable object ID is the pinned commit. A repository locator and local checkout path remain replaceable, credential-free retrieval metadata: they do not participate in run identity and the host reauthorizes them before use.

                              Different targets in the same immutable object and root document are different workflow definitions. Resume uses the recorded descriptor and exact target, reauthorizes whatever retrieval metadata is current, and does not re-resolve the caller's glob against a changed checkout.

                              Target projection preserves original source positions and deterministic expansion identity within that selected definition. Replay of the same target observes the same projection. Existing run/workflow durability, failure, cancellation, secret filtering, output, and replay contracts otherwise remain unchanged.

                              Markdown links

                              A reference such as README.md#Verification remains an ordinary Markdown link when it appears inside a document. Rendering or expanding a link never executes its target.

                              An XMD-aware host may recognize the reference and offer an explicit Run action. Execution starts only when a caller passes the reference to xmd run, xmd workflow start, or the equivalent shared API.

                              Future fan-out

                              A selector that resolves multiple paths fails in this story.

                              A future feature may fan a multi-match selector out into one independent run or workflow per resolved target. Each execution will have its own run ID, journal, status, Workspace, and lifecycle. This is orchestration above a single document execution: ** retains its standard recursive glob meaning and does not itself mean fan-out.

                              Acceptance

                              • xmd run README.md retains whole-document behavior.
                              • xmd run README.md#Target executes ancestor direct content plus the selected subtree and excludes sibling subtrees.
                              • Selecting a non-leaf section executes all of its descendants in document order.
                              • Selected output retains the ancestor and target headings.
                              • A single outermost title is omitted from canonical fragments; multiple outermost headings remain addressable path segments.
                              • xmd targets lists canonical references without executing the document.
                              • Only static root-flow headings are addressable.
                              • Literal, *, and ** hierarchical matching obey the exact-one rule.
                              • Zero and multiple matches fail before expansion or effects and report useful canonical paths.
                              • Skipped siblings cannot emit, bind values, acquire resources, invoke components, or perform effects.
                              • The selected projection retains the root's props, frontmatter, return, and output contracts.
                              • The shared execution and inspection APIs, CLI run mode, and workflow start mode use the same target representation and resolution.
                              • Retained definition identity includes the resolved exact target path, while the original glob remains non-authoritative invocation metadata.
                              • Resume uses the recorded immutable definition and target.
                              • Markdown links remain passive.
                              • Existing unselected execution, error, cancellation, output, secret-filtering, and replay behavior remains covered.
                              • The executable MDX, CLI, and workflow definition specifications describe the shipped contract in present tense.

                              Related work

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions