Skip to content

The plugin treats .mdx as the primary publish signal; the emitted CI template publishes .md only #13

Description

@A-PachecoT

Surfaced while building #11, which had to decide "will the repo's Action publish this file?" from local evidence.

The inconsistency

The plugin and the CLI disagree about what .mdx means.

The plugin treats .mdx as the PRIMARY intent-to-publish signal. hooks/lib.sh:is_doc():

*.mdx) return 0 ;;                                  # authoring it IS the intent to publish
*/docs/*.md|*/docs/*/*.md|…) return 0 ;;            # .md only under docs/

.mdx qualifies anywhere in the tree; .md only under a docs/ directory.

The CI template the CLI emits publishes .md only. From basalt onboard --print-workflow:

on:
  push:
    branches: [main]
    paths: ['**.md']
...
    run: git ls-files '*.md' | xargs basalt publish $FLAGS

Both the paths: filter and the git ls-files glob miss .mdx.

The consequence

A user who follows the plugin's own doctrine — author .mdx, install the emitted workflow — gets docs that the hook considers publishable and the Action never publishes. Nothing errors. The doc simply never appears.

This is not a tail case. It is the default path for a new user: basalt onboard writes that workflow, and .mdx is the extension the plugin signals hardest on.

Observed corroboration: a real repo-backed vault publishing .mdx today only does so because its workflow was hand-edited to add '**.mdx' to both filters. The emitted template would not have.

Why it is filed rather than fixed in #11

#11's hook evaluates the workflow's actual paths: list rather than assuming either extension, so it is correct under both shapes — under the emitted template an .mdx correctly keeps nagging (nothing publishes it), and under a widened one it correctly goes silent. That makes the hook honest about the inconsistency; it does not resolve it.

The decision this needs

One of the two is wrong, and it is a product call, not a hook call:

  1. the emitted template should publish **.mdx as well — the plugin's is_doc() is right; or
  2. .mdx should not be the plugin's primary publish signal — the template is right.

Whichever, the two should ship together, since the gap is only visible to a user who follows both.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions