Skip to content

basalt status reports modified right after a successful publish for docs with local images #12

Description

@A-PachecoT

Carried forward from #5 problem (2), so it is not silently closed when #5's problem (1) (the dirty-list) is fixed by #11.

The bug

basalt status reports modified for a doc that was just published successfully, with no edit in between, whenever the doc references local images.

basalt publish ship-log/x.md   # → modified ... [assets: 0↑ 4✓]
basalt status  ship-log/x.md   # → modified     ← nothing was edited

Why

Publish rewrites local image refs (./assets/x.png/files/<vault>/_assets/<hash>-x.png) and normalizes frontmatter, without touching the local .md — this is documented in --help. So the canonical source can never match the local file byte-for-byte, and the comparison is being made against the wrong side of a transformation the publish itself performed.

Why it matters beyond the wrong word

status is the only command that answers "is this published?". For a vault of ship-logs — where nearly every doc carries images — it cannot answer it for any of them.

Concretely, this already changed a design decision: #11 needed a publish-state oracle for the Stop hook, and basalt status was the obvious choice (it was proposed in #5's own comment thread). It was rejected partly on this: building on it would have made the hook fail precisely in the vault shape where the bug was reported, and fail silently. #11 derives publish-state from local git and harness state instead.

Proposed fix

Compare against the post-transformation sha — apply the same rewrite to the local content before hashing — or exclude the refs that publish rewrites from the hash.

Acceptance

  • basalt status <f> on a freshly published doc with local images, unedited → unchanged
  • edit only that doc's body → modified

Scope

The status/publish comparator, i.e. the CLI — not the plugin's hook surface.

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