💥 Rename componentDirs to includes #271

Description

@taras

What

Rename the configured component-search-path surface everywhere it appears:

CurrentReplacement
componentDirsincludes
componentDirinclude
DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
--component-dir--include

This is a rename, not a semantics change. An include is one configured directory
repository components may resolve from. Component search path remains the
architecture and specification term for the complete ordered resolution path;
the rename does not replace that vocabulary with “includes.”

Decisions (settled)

  • CLI spelling: the repeatable flag is singular --include.
  • Programmatic spelling: option collections are plural includes.
  • Concept: component search paths, with configured directories called
    includes. Specifications remain component-focused.
  • Defaults: unchanged — ["components", "."], renamed
    DEFAULT_INCLUDES.
  • Merge rule: unchanged — explicit includes replace the defaults
    (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
    is absent; includes: [] remains an explicitly empty search-path
    contribution.
  • Order: unchanged. Resolution examines configured includes in their
    supplied order. A directory xmd test target still prepends the document's
    own directory and the target root, retains the first occurrence of a repeated
    directory, then appends the configured includes.
  • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
    or legacy configuration spelling.

Richer defaults, including embedded Markdown components, remain #67/#83's
scope and do not enter this rename.

Surface to rename

The inventory is semantic rather than tied to line numbers. The change covers
every active repository occurrence of the old identifiers and flag, including:

  • Core public API and resolution — execution settings/options,
    SelectOptions, InspectComponentOptions, the exported default constant,
    resolver plumbing, unresolved-selection reporting, and the options snapshot
    detached for execution middleware.
  • CLI host behavior — the run and test schemas, parsed configuration,
    document configuration, help, inline execution, directory-target search-path
    composition, the nested testing host, and workflow executions that explicitly
    install an empty configured search path.
  • Package consumers — testing, test-agent, web, workflow, and repository
    helpers and tests that construct or inspect execution options.
  • Checked-in invocationsdeno.json tasks, review and repo-analysis
    workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
    integration tests.
  • Project records — architecture, specifications, active documentation, and
    site copy and examples.

The mechanical audit removes active occurrences of componentDirs,
componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
explicitly justified historical or third-party/generated record. Prose that
truthfully describes a component search path or component search
directory
remains and is not an audit failure.

Acceptance criteria

  1. Public execution, selection, and inspection APIs expose includes; the old
    programmatic spellings are absent and rejected by typechecking.
  2. Core exports DEFAULT_INCLUDES with the unchanged value
    ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
  3. xmd run and xmd test help show repeatable --include; repeated flags
    preserve caller order and replace the defaults, while the old flag is
    refused.
  4. Omitting includes uses the existing defaults, and explicitly supplying
    [] searches no configured directories.
  5. Single-document execution, inline execution, inspection, execution
    middleware, and nested <Execution host="run"> receive the same configured
    directories they did before the rename.
  6. Directory-target testing keeps its existing effective resolution order:
    document directory, target root, configured includes, first duplicate wins.
  7. Workflow execution keeps an empty configured search path and remains closed
    over its retained component bundle; the rename grants no new resolution
    source or authority.
  8. Resolution tiers, selected component, journal shape, searched diagnostic
    contents, defaults, precedence, and failure behavior are unchanged.
  9. Every checked-in invocation that runs the source or checked-out binary uses
    --include in the same change. Active docs and examples advertise only the
    new surface.
  10. The final old-name audit accounts for every remaining match as an explicit
    historical or third-party/generated exception; active first-party code,
    tests, tasks, workflows, specs, architecture, and docs contain none.

The Planner freezes the focused evidence matrix for these criteria before
implementation. The evidence must distinguish the clean break and unchanged
behavior; it does not expand the rename into new resolution semantics.

Sequencing

There is no released-binary exception in the current repository. The review and
repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
and the CI smoke paths do the same. They must migrate to --include in the
rename PR so every checked-in caller agrees with the binary it invokes.

Any external consumer moves when it adopts the release containing this breaking
change. Supporting an older released binary from current first-party workflow
configuration is not part of the contract.

Out of scope

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 \u003cpre\u003e\u003ccode\u003e 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

      💥 Rename componentDirs to includes #271

      Description

      @taras

      What

      Rename the configured component-search-path surface everywhere it appears:

      CurrentReplacement
      componentDirsincludes
      componentDirinclude
      DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
      --component-dir--include

      This is a rename, not a semantics change. An include is one configured directory
      repository components may resolve from. Component search path remains the
      architecture and specification term for the complete ordered resolution path;
      the rename does not replace that vocabulary with “includes.”

      Decisions (settled)

      • CLI spelling: the repeatable flag is singular --include.
      • Programmatic spelling: option collections are plural includes.
      • Concept: component search paths, with configured directories called
        includes. Specifications remain component-focused.
      • Defaults: unchanged — ["components", "."], renamed
        DEFAULT_INCLUDES.
      • Merge rule: unchanged — explicit includes replace the defaults
        (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
        is absent; includes: [] remains an explicitly empty search-path
        contribution.
      • Order: unchanged. Resolution examines configured includes in their
        supplied order. A directory xmd test target still prepends the document's
        own directory and the target root, retains the first occurrence of a repeated
        directory, then appends the configured includes.
      • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
        or legacy configuration spelling.

      Richer defaults, including embedded Markdown components, remain #67/#83's
      scope and do not enter this rename.

      Surface to rename

      The inventory is semantic rather than tied to line numbers. The change covers
      every active repository occurrence of the old identifiers and flag, including:

      • Core public API and resolution — execution settings/options,
        SelectOptions, InspectComponentOptions, the exported default constant,
        resolver plumbing, unresolved-selection reporting, and the options snapshot
        detached for execution middleware.
      • CLI host behavior — the run and test schemas, parsed configuration,
        document configuration, help, inline execution, directory-target search-path
        composition, the nested testing host, and workflow executions that explicitly
        install an empty configured search path.
      • Package consumers — testing, test-agent, web, workflow, and repository
        helpers and tests that construct or inspect execution options.
      • Checked-in invocationsdeno.json tasks, review and repo-analysis
        workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
        integration tests.
      • Project records — architecture, specifications, active documentation, and
        site copy and examples.

      The mechanical audit removes active occurrences of componentDirs,
      componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
      explicitly justified historical or third-party/generated record. Prose that
      truthfully describes a component search path or component search
      directory
      remains and is not an audit failure.

      Acceptance criteria

      1. Public execution, selection, and inspection APIs expose includes; the old
        programmatic spellings are absent and rejected by typechecking.
      2. Core exports DEFAULT_INCLUDES with the unchanged value
        ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
      3. xmd run and xmd test help show repeatable --include; repeated flags
        preserve caller order and replace the defaults, while the old flag is
        refused.
      4. Omitting includes uses the existing defaults, and explicitly supplying
        [] searches no configured directories.
      5. Single-document execution, inline execution, inspection, execution
        middleware, and nested <Execution host="run"> receive the same configured
        directories they did before the rename.
      6. Directory-target testing keeps its existing effective resolution order:
        document directory, target root, configured includes, first duplicate wins.
      7. Workflow execution keeps an empty configured search path and remains closed
        over its retained component bundle; the rename grants no new resolution
        source or authority.
      8. Resolution tiers, selected component, journal shape, searched diagnostic
        contents, defaults, precedence, and failure behavior are unchanged.
      9. Every checked-in invocation that runs the source or checked-out binary uses
        --include in the same change. Active docs and examples advertise only the
        new surface.
      10. The final old-name audit accounts for every remaining match as an explicit
        historical or third-party/generated exception; active first-party code,
        tests, tasks, workflows, specs, architecture, and docs contain none.

      The Planner freezes the focused evidence matrix for these criteria before
      implementation. The evidence must distinguish the clean break and unchanged
      behavior; it does not expand the rename into new resolution semantics.

      Sequencing

      There is no released-binary exception in the current repository. The review and
      repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
      and the CI smoke paths do the same. They must migrate to --include in the
      rename PR so every checked-in caller agrees with the binary it invokes.

      Any external consumer moves when it adopts the release containing this breaking
      change. Supporting an older released binary from current first-party workflow
      configuration is not part of the contract.

      Out of scope

      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

          💥 Rename componentDirs to includes #271

          Description

          @taras

          What

          Rename the configured component-search-path surface everywhere it appears:

          CurrentReplacement
          componentDirsincludes
          componentDirinclude
          DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
          --component-dir--include

          This is a rename, not a semantics change. An include is one configured directory
          repository components may resolve from. Component search path remains the
          architecture and specification term for the complete ordered resolution path;
          the rename does not replace that vocabulary with “includes.”

          Decisions (settled)

          • CLI spelling: the repeatable flag is singular --include.
          • Programmatic spelling: option collections are plural includes.
          • Concept: component search paths, with configured directories called
            includes. Specifications remain component-focused.
          • Defaults: unchanged — ["components", "."], renamed
            DEFAULT_INCLUDES.
          • Merge rule: unchanged — explicit includes replace the defaults
            (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
            is absent; includes: [] remains an explicitly empty search-path
            contribution.
          • Order: unchanged. Resolution examines configured includes in their
            supplied order. A directory xmd test target still prepends the document's
            own directory and the target root, retains the first occurrence of a repeated
            directory, then appends the configured includes.
          • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
            or legacy configuration spelling.

          Richer defaults, including embedded Markdown components, remain #67/#83's
          scope and do not enter this rename.

          Surface to rename

          The inventory is semantic rather than tied to line numbers. The change covers
          every active repository occurrence of the old identifiers and flag, including:

          • Core public API and resolution — execution settings/options,
            SelectOptions, InspectComponentOptions, the exported default constant,
            resolver plumbing, unresolved-selection reporting, and the options snapshot
            detached for execution middleware.
          • CLI host behavior — the run and test schemas, parsed configuration,
            document configuration, help, inline execution, directory-target search-path
            composition, the nested testing host, and workflow executions that explicitly
            install an empty configured search path.
          • Package consumers — testing, test-agent, web, workflow, and repository
            helpers and tests that construct or inspect execution options.
          • Checked-in invocationsdeno.json tasks, review and repo-analysis
            workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
            integration tests.
          • Project records — architecture, specifications, active documentation, and
            site copy and examples.

          The mechanical audit removes active occurrences of componentDirs,
          componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
          explicitly justified historical or third-party/generated record. Prose that
          truthfully describes a component search path or component search
          directory
          remains and is not an audit failure.

          Acceptance criteria

          1. Public execution, selection, and inspection APIs expose includes; the old
            programmatic spellings are absent and rejected by typechecking.
          2. Core exports DEFAULT_INCLUDES with the unchanged value
            ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
          3. xmd run and xmd test help show repeatable --include; repeated flags
            preserve caller order and replace the defaults, while the old flag is
            refused.
          4. Omitting includes uses the existing defaults, and explicitly supplying
            [] searches no configured directories.
          5. Single-document execution, inline execution, inspection, execution
            middleware, and nested <Execution host="run"> receive the same configured
            directories they did before the rename.
          6. Directory-target testing keeps its existing effective resolution order:
            document directory, target root, configured includes, first duplicate wins.
          7. Workflow execution keeps an empty configured search path and remains closed
            over its retained component bundle; the rename grants no new resolution
            source or authority.
          8. Resolution tiers, selected component, journal shape, searched diagnostic
            contents, defaults, precedence, and failure behavior are unchanged.
          9. Every checked-in invocation that runs the source or checked-out binary uses
            --include in the same change. Active docs and examples advertise only the
            new surface.
          10. The final old-name audit accounts for every remaining match as an explicit
            historical or third-party/generated exception; active first-party code,
            tests, tasks, workflows, specs, architecture, and docs contain none.

          The Planner freezes the focused evidence matrix for these criteria before
          implementation. The evidence must distinguish the clean break and unchanged
          behavior; it does not expand the rename into new resolution semantics.

          Sequencing

          There is no released-binary exception in the current repository. The review and
          repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
          and the CI smoke paths do the same. They must migrate to --include in the
          rename PR so every checked-in caller agrees with the binary it invokes.

          Any external consumer moves when it adopts the release containing this breaking
          change. Supporting an older released binary from current first-party workflow
          configuration is not part of the contract.

          Out of scope

          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 \u003e 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

              💥 Rename componentDirs to includes #271

              Description

              @taras

              What

              Rename the configured component-search-path surface everywhere it appears:

              CurrentReplacement
              componentDirsincludes
              componentDirinclude
              DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
              --component-dir--include

              This is a rename, not a semantics change. An include is one configured directory
              repository components may resolve from. Component search path remains the
              architecture and specification term for the complete ordered resolution path;
              the rename does not replace that vocabulary with “includes.”

              Decisions (settled)

              • CLI spelling: the repeatable flag is singular --include.
              • Programmatic spelling: option collections are plural includes.
              • Concept: component search paths, with configured directories called
                includes. Specifications remain component-focused.
              • Defaults: unchanged — ["components", "."], renamed
                DEFAULT_INCLUDES.
              • Merge rule: unchanged — explicit includes replace the defaults
                (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
                is absent; includes: [] remains an explicitly empty search-path
                contribution.
              • Order: unchanged. Resolution examines configured includes in their
                supplied order. A directory xmd test target still prepends the document's
                own directory and the target root, retains the first occurrence of a repeated
                directory, then appends the configured includes.
              • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
                or legacy configuration spelling.

              Richer defaults, including embedded Markdown components, remain #67/#83's
              scope and do not enter this rename.

              Surface to rename

              The inventory is semantic rather than tied to line numbers. The change covers
              every active repository occurrence of the old identifiers and flag, including:

              • Core public API and resolution — execution settings/options,
                SelectOptions, InspectComponentOptions, the exported default constant,
                resolver plumbing, unresolved-selection reporting, and the options snapshot
                detached for execution middleware.
              • CLI host behavior — the run and test schemas, parsed configuration,
                document configuration, help, inline execution, directory-target search-path
                composition, the nested testing host, and workflow executions that explicitly
                install an empty configured search path.
              • Package consumers — testing, test-agent, web, workflow, and repository
                helpers and tests that construct or inspect execution options.
              • Checked-in invocationsdeno.json tasks, review and repo-analysis
                workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
                integration tests.
              • Project records — architecture, specifications, active documentation, and
                site copy and examples.

              The mechanical audit removes active occurrences of componentDirs,
              componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
              explicitly justified historical or third-party/generated record. Prose that
              truthfully describes a component search path or component search
              directory
              remains and is not an audit failure.

              Acceptance criteria

              1. Public execution, selection, and inspection APIs expose includes; the old
                programmatic spellings are absent and rejected by typechecking.
              2. Core exports DEFAULT_INCLUDES with the unchanged value
                ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
              3. xmd run and xmd test help show repeatable --include; repeated flags
                preserve caller order and replace the defaults, while the old flag is
                refused.
              4. Omitting includes uses the existing defaults, and explicitly supplying
                [] searches no configured directories.
              5. Single-document execution, inline execution, inspection, execution
                middleware, and nested <Execution host="run"> receive the same configured
                directories they did before the rename.
              6. Directory-target testing keeps its existing effective resolution order:
                document directory, target root, configured includes, first duplicate wins.
              7. Workflow execution keeps an empty configured search path and remains closed
                over its retained component bundle; the rename grants no new resolution
                source or authority.
              8. Resolution tiers, selected component, journal shape, searched diagnostic
                contents, defaults, precedence, and failure behavior are unchanged.
              9. Every checked-in invocation that runs the source or checked-out binary uses
                --include in the same change. Active docs and examples advertise only the
                new surface.
              10. The final old-name audit accounts for every remaining match as an explicit
                historical or third-party/generated exception; active first-party code,
                tests, tasks, workflows, specs, architecture, and docs contain none.

              The Planner freezes the focused evidence matrix for these criteria before
              implementation. The evidence must distinguish the clean break and unchanged
              behavior; it does not expand the rename into new resolution semantics.

              Sequencing

              There is no released-binary exception in the current repository. The review and
              repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
              and the CI smoke paths do the same. They must migrate to --include in the
              rename PR so every checked-in caller agrees with the binary it invokes.

              Any external consumer moves when it adopts the release containing this breaking
              change. Supporting an older released binary from current first-party workflow
              configuration is not part of the contract.

              Out of scope

              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

                  💥 Rename componentDirs to includes #271

                  Description

                  @taras

                  What

                  Rename the configured component-search-path surface everywhere it appears:

                  CurrentReplacement
                  componentDirsincludes
                  componentDirinclude
                  DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
                  --component-dir--include

                  This is a rename, not a semantics change. An include is one configured directory
                  repository components may resolve from. Component search path remains the
                  architecture and specification term for the complete ordered resolution path;
                  the rename does not replace that vocabulary with “includes.”

                  Decisions (settled)

                  • CLI spelling: the repeatable flag is singular --include.
                  • Programmatic spelling: option collections are plural includes.
                  • Concept: component search paths, with configured directories called
                    includes. Specifications remain component-focused.
                  • Defaults: unchanged — ["components", "."], renamed
                    DEFAULT_INCLUDES.
                  • Merge rule: unchanged — explicit includes replace the defaults
                    (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
                    is absent; includes: [] remains an explicitly empty search-path
                    contribution.
                  • Order: unchanged. Resolution examines configured includes in their
                    supplied order. A directory xmd test target still prepends the document's
                    own directory and the target root, retains the first occurrence of a repeated
                    directory, then appends the configured includes.
                  • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
                    or legacy configuration spelling.

                  Richer defaults, including embedded Markdown components, remain #67/#83's
                  scope and do not enter this rename.

                  Surface to rename

                  The inventory is semantic rather than tied to line numbers. The change covers
                  every active repository occurrence of the old identifiers and flag, including:

                  • Core public API and resolution — execution settings/options,
                    SelectOptions, InspectComponentOptions, the exported default constant,
                    resolver plumbing, unresolved-selection reporting, and the options snapshot
                    detached for execution middleware.
                  • CLI host behavior — the run and test schemas, parsed configuration,
                    document configuration, help, inline execution, directory-target search-path
                    composition, the nested testing host, and workflow executions that explicitly
                    install an empty configured search path.
                  • Package consumers — testing, test-agent, web, workflow, and repository
                    helpers and tests that construct or inspect execution options.
                  • Checked-in invocationsdeno.json tasks, review and repo-analysis
                    workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
                    integration tests.
                  • Project records — architecture, specifications, active documentation, and
                    site copy and examples.

                  The mechanical audit removes active occurrences of componentDirs,
                  componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
                  explicitly justified historical or third-party/generated record. Prose that
                  truthfully describes a component search path or component search
                  directory
                  remains and is not an audit failure.

                  Acceptance criteria

                  1. Public execution, selection, and inspection APIs expose includes; the old
                    programmatic spellings are absent and rejected by typechecking.
                  2. Core exports DEFAULT_INCLUDES with the unchanged value
                    ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
                  3. xmd run and xmd test help show repeatable --include; repeated flags
                    preserve caller order and replace the defaults, while the old flag is
                    refused.
                  4. Omitting includes uses the existing defaults, and explicitly supplying
                    [] searches no configured directories.
                  5. Single-document execution, inline execution, inspection, execution
                    middleware, and nested <Execution host="run"> receive the same configured
                    directories they did before the rename.
                  6. Directory-target testing keeps its existing effective resolution order:
                    document directory, target root, configured includes, first duplicate wins.
                  7. Workflow execution keeps an empty configured search path and remains closed
                    over its retained component bundle; the rename grants no new resolution
                    source or authority.
                  8. Resolution tiers, selected component, journal shape, searched diagnostic
                    contents, defaults, precedence, and failure behavior are unchanged.
                  9. Every checked-in invocation that runs the source or checked-out binary uses
                    --include in the same change. Active docs and examples advertise only the
                    new surface.
                  10. The final old-name audit accounts for every remaining match as an explicit
                    historical or third-party/generated exception; active first-party code,
                    tests, tasks, workflows, specs, architecture, and docs contain none.

                  The Planner freezes the focused evidence matrix for these criteria before
                  implementation. The evidence must distinguish the clean break and unchanged
                  behavior; it does not expand the rename into new resolution semantics.

                  Sequencing

                  There is no released-binary exception in the current repository. The review and
                  repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
                  and the CI smoke paths do the same. They must migrate to --include in the
                  rename PR so every checked-in caller agrees with the binary it invokes.

                  Any external consumer moves when it adopts the release containing this breaking
                  change. Supporting an older released binary from current first-party workflow
                  configuration is not part of the contract.

                  Out of scope

                  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

                      💥 Rename componentDirs to includes #271

                      Description

                      @taras

                      What

                      Rename the configured component-search-path surface everywhere it appears:

                      CurrentReplacement
                      componentDirsincludes
                      componentDirinclude
                      DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
                      --component-dir--include

                      This is a rename, not a semantics change. An include is one configured directory
                      repository components may resolve from. Component search path remains the
                      architecture and specification term for the complete ordered resolution path;
                      the rename does not replace that vocabulary with “includes.”

                      Decisions (settled)

                      • CLI spelling: the repeatable flag is singular --include.
                      • Programmatic spelling: option collections are plural includes.
                      • Concept: component search paths, with configured directories called
                        includes. Specifications remain component-focused.
                      • Defaults: unchanged — ["components", "."], renamed
                        DEFAULT_INCLUDES.
                      • Merge rule: unchanged — explicit includes replace the defaults
                        (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
                        is absent; includes: [] remains an explicitly empty search-path
                        contribution.
                      • Order: unchanged. Resolution examines configured includes in their
                        supplied order. A directory xmd test target still prepends the document's
                        own directory and the target root, retains the first occurrence of a repeated
                        directory, then appends the configured includes.
                      • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
                        or legacy configuration spelling.

                      Richer defaults, including embedded Markdown components, remain #67/#83's
                      scope and do not enter this rename.

                      Surface to rename

                      The inventory is semantic rather than tied to line numbers. The change covers
                      every active repository occurrence of the old identifiers and flag, including:

                      • Core public API and resolution — execution settings/options,
                        SelectOptions, InspectComponentOptions, the exported default constant,
                        resolver plumbing, unresolved-selection reporting, and the options snapshot
                        detached for execution middleware.
                      • CLI host behavior — the run and test schemas, parsed configuration,
                        document configuration, help, inline execution, directory-target search-path
                        composition, the nested testing host, and workflow executions that explicitly
                        install an empty configured search path.
                      • Package consumers — testing, test-agent, web, workflow, and repository
                        helpers and tests that construct or inspect execution options.
                      • Checked-in invocationsdeno.json tasks, review and repo-analysis
                        workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
                        integration tests.
                      • Project records — architecture, specifications, active documentation, and
                        site copy and examples.

                      The mechanical audit removes active occurrences of componentDirs,
                      componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
                      explicitly justified historical or third-party/generated record. Prose that
                      truthfully describes a component search path or component search
                      directory
                      remains and is not an audit failure.

                      Acceptance criteria

                      1. Public execution, selection, and inspection APIs expose includes; the old
                        programmatic spellings are absent and rejected by typechecking.
                      2. Core exports DEFAULT_INCLUDES with the unchanged value
                        ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
                      3. xmd run and xmd test help show repeatable --include; repeated flags
                        preserve caller order and replace the defaults, while the old flag is
                        refused.
                      4. Omitting includes uses the existing defaults, and explicitly supplying
                        [] searches no configured directories.
                      5. Single-document execution, inline execution, inspection, execution
                        middleware, and nested <Execution host="run"> receive the same configured
                        directories they did before the rename.
                      6. Directory-target testing keeps its existing effective resolution order:
                        document directory, target root, configured includes, first duplicate wins.
                      7. Workflow execution keeps an empty configured search path and remains closed
                        over its retained component bundle; the rename grants no new resolution
                        source or authority.
                      8. Resolution tiers, selected component, journal shape, searched diagnostic
                        contents, defaults, precedence, and failure behavior are unchanged.
                      9. Every checked-in invocation that runs the source or checked-out binary uses
                        --include in the same change. Active docs and examples advertise only the
                        new surface.
                      10. The final old-name audit accounts for every remaining match as an explicit
                        historical or third-party/generated exception; active first-party code,
                        tests, tasks, workflows, specs, architecture, and docs contain none.

                      The Planner freezes the focused evidence matrix for these criteria before
                      implementation. The evidence must distinguish the clean break and unchanged
                      behavior; it does not expand the rename into new resolution semantics.

                      Sequencing

                      There is no released-binary exception in the current repository. The review and
                      repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
                      and the CI smoke paths do the same. They must migrate to --include in the
                      rename PR so every checked-in caller agrees with the binary it invokes.

                      Any external consumer moves when it adopts the release containing this breaking
                      change. Supporting an older released binary from current first-party workflow
                      configuration is not part of the contract.

                      Out of scope

                      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

                          💥 Rename componentDirs to includes #271

                          Description

                          @taras

                          What

                          Rename the configured component-search-path surface everywhere it appears:

                          CurrentReplacement
                          componentDirsincludes
                          componentDirinclude
                          DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
                          --component-dir--include

                          This is a rename, not a semantics change. An include is one configured directory
                          repository components may resolve from. Component search path remains the
                          architecture and specification term for the complete ordered resolution path;
                          the rename does not replace that vocabulary with “includes.”

                          Decisions (settled)

                          • CLI spelling: the repeatable flag is singular --include.
                          • Programmatic spelling: option collections are plural includes.
                          • Concept: component search paths, with configured directories called
                            includes. Specifications remain component-focused.
                          • Defaults: unchanged — ["components", "."], renamed
                            DEFAULT_INCLUDES.
                          • Merge rule: unchanged — explicit includes replace the defaults
                            (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
                            is absent; includes: [] remains an explicitly empty search-path
                            contribution.
                          • Order: unchanged. Resolution examines configured includes in their
                            supplied order. A directory xmd test target still prepends the document's
                            own directory and the target root, retains the first occurrence of a repeated
                            directory, then appends the configured includes.
                          • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
                            or legacy configuration spelling.

                          Richer defaults, including embedded Markdown components, remain #67/#83's
                          scope and do not enter this rename.

                          Surface to rename

                          The inventory is semantic rather than tied to line numbers. The change covers
                          every active repository occurrence of the old identifiers and flag, including:

                          • Core public API and resolution — execution settings/options,
                            SelectOptions, InspectComponentOptions, the exported default constant,
                            resolver plumbing, unresolved-selection reporting, and the options snapshot
                            detached for execution middleware.
                          • CLI host behavior — the run and test schemas, parsed configuration,
                            document configuration, help, inline execution, directory-target search-path
                            composition, the nested testing host, and workflow executions that explicitly
                            install an empty configured search path.
                          • Package consumers — testing, test-agent, web, workflow, and repository
                            helpers and tests that construct or inspect execution options.
                          • Checked-in invocationsdeno.json tasks, review and repo-analysis
                            workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
                            integration tests.
                          • Project records — architecture, specifications, active documentation, and
                            site copy and examples.

                          The mechanical audit removes active occurrences of componentDirs,
                          componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
                          explicitly justified historical or third-party/generated record. Prose that
                          truthfully describes a component search path or component search
                          directory
                          remains and is not an audit failure.

                          Acceptance criteria

                          1. Public execution, selection, and inspection APIs expose includes; the old
                            programmatic spellings are absent and rejected by typechecking.
                          2. Core exports DEFAULT_INCLUDES with the unchanged value
                            ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
                          3. xmd run and xmd test help show repeatable --include; repeated flags
                            preserve caller order and replace the defaults, while the old flag is
                            refused.
                          4. Omitting includes uses the existing defaults, and explicitly supplying
                            [] searches no configured directories.
                          5. Single-document execution, inline execution, inspection, execution
                            middleware, and nested <Execution host="run"> receive the same configured
                            directories they did before the rename.
                          6. Directory-target testing keeps its existing effective resolution order:
                            document directory, target root, configured includes, first duplicate wins.
                          7. Workflow execution keeps an empty configured search path and remains closed
                            over its retained component bundle; the rename grants no new resolution
                            source or authority.
                          8. Resolution tiers, selected component, journal shape, searched diagnostic
                            contents, defaults, precedence, and failure behavior are unchanged.
                          9. Every checked-in invocation that runs the source or checked-out binary uses
                            --include in the same change. Active docs and examples advertise only the
                            new surface.
                          10. The final old-name audit accounts for every remaining match as an explicit
                            historical or third-party/generated exception; active first-party code,
                            tests, tasks, workflows, specs, architecture, and docs contain none.

                          The Planner freezes the focused evidence matrix for these criteria before
                          implementation. The evidence must distinguish the clean break and unchanged
                          behavior; it does not expand the rename into new resolution semantics.

                          Sequencing

                          There is no released-binary exception in the current repository. The review and
                          repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
                          and the CI smoke paths do the same. They must migrate to --include in the
                          rename PR so every checked-in caller agrees with the binary it invokes.

                          Any external consumer moves when it adopts the release containing this breaking
                          change. Supporting an older released binary from current first-party workflow
                          configuration is not part of the contract.

                          Out of scope

                          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

                              💥 Rename componentDirs to includes #271

                              Description

                              @taras

                              What

                              Rename the configured component-search-path surface everywhere it appears:

                              CurrentReplacement
                              componentDirsincludes
                              componentDirinclude
                              DEFAULT_COMPONENT_DIRSDEFAULT_INCLUDES
                              --component-dir--include

                              This is a rename, not a semantics change. An include is one configured directory
                              repository components may resolve from. Component search path remains the
                              architecture and specification term for the complete ordered resolution path;
                              the rename does not replace that vocabulary with “includes.”

                              Decisions (settled)

                              • CLI spelling: the repeatable flag is singular --include.
                              • Programmatic spelling: option collections are plural includes.
                              • Concept: component search paths, with configured directories called
                                includes. Specifications remain component-focused.
                              • Defaults: unchanged — ["components", "."], renamed
                                DEFAULT_INCLUDES.
                              • Merge rule: unchanged — explicit includes replace the defaults
                                (options.includes ?? DEFAULT_INCLUDES). Defaults apply only when the option
                                is absent; includes: [] remains an explicitly empty search-path
                                contribution.
                              • Order: unchanged. Resolution examines configured includes in their
                                supplied order. A directory xmd test target still prepends the document's
                                own directory and the target root, retains the first occurrence of a repeated
                                directory, then appends the configured includes.
                              • Migration: clean break, 💥 — no API alias, CLI alias, deprecation period,
                                or legacy configuration spelling.

                              Richer defaults, including embedded Markdown components, remain #67/#83's
                              scope and do not enter this rename.

                              Surface to rename

                              The inventory is semantic rather than tied to line numbers. The change covers
                              every active repository occurrence of the old identifiers and flag, including:

                              • Core public API and resolution — execution settings/options,
                                SelectOptions, InspectComponentOptions, the exported default constant,
                                resolver plumbing, unresolved-selection reporting, and the options snapshot
                                detached for execution middleware.
                              • CLI host behavior — the run and test schemas, parsed configuration,
                                document configuration, help, inline execution, directory-target search-path
                                composition, the nested testing host, and workflow executions that explicitly
                                install an empty configured search path.
                              • Package consumers — testing, test-agent, web, workflow, and repository
                                helpers and tests that construct or inspect execution options.
                              • Checked-in invocationsdeno.json tasks, review and repo-analysis
                                workflows, the compiled-binary CI smoke paths, smoke scripts, fixtures, and
                                integration tests.
                              • Project records — architecture, specifications, active documentation, and
                                site copy and examples.

                              The mechanical audit removes active occurrences of componentDirs,
                              componentDir, DEFAULT_COMPONENT_DIRS, and --component-dir outside an
                              explicitly justified historical or third-party/generated record. Prose that
                              truthfully describes a component search path or component search
                              directory
                              remains and is not an audit failure.

                              Acceptance criteria

                              1. Public execution, selection, and inspection APIs expose includes; the old
                                programmatic spellings are absent and rejected by typechecking.
                              2. Core exports DEFAULT_INCLUDES with the unchanged value
                                ["components", "."]; DEFAULT_COMPONENT_DIRS is not exported.
                              3. xmd run and xmd test help show repeatable --include; repeated flags
                                preserve caller order and replace the defaults, while the old flag is
                                refused.
                              4. Omitting includes uses the existing defaults, and explicitly supplying
                                [] searches no configured directories.
                              5. Single-document execution, inline execution, inspection, execution
                                middleware, and nested <Execution host="run"> receive the same configured
                                directories they did before the rename.
                              6. Directory-target testing keeps its existing effective resolution order:
                                document directory, target root, configured includes, first duplicate wins.
                              7. Workflow execution keeps an empty configured search path and remains closed
                                over its retained component bundle; the rename grants no new resolution
                                source or authority.
                              8. Resolution tiers, selected component, journal shape, searched diagnostic
                                contents, defaults, precedence, and failure behavior are unchanged.
                              9. Every checked-in invocation that runs the source or checked-out binary uses
                                --include in the same change. Active docs and examples advertise only the
                                new surface.
                              10. The final old-name audit accounts for every remaining match as an explicit
                                historical or third-party/generated exception; active first-party code,
                                tests, tasks, workflows, specs, architecture, and docs contain none.

                              The Planner freezes the focused evidence matrix for these criteria before
                              implementation. The evidence must distinguish the clean break and unchanged
                              behavior; it does not expand the rename into new resolution semantics.

                              Sequencing

                              There is no released-binary exception in the current repository. The review and
                              repo-analysis workflows prepare, build, and run the checked-out ./dist/xmd,
                              and the CI smoke paths do the same. They must migrate to --include in the
                              rename PR so every checked-in caller agrees with the binary it invokes.

                              Any external consumer moves when it adopts the release containing this breaking
                              change. Supporting an older released binary from current first-party workflow
                              configuration is not part of the contract.

                              Out of scope

                              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