Skip to content

Releases: runkids/mdproof

v0.0.9

08 Apr 07:00

Choose a tag to compare

[0.0.9] - 2026-04-08

New Features

  • GitHub Actions annotations--report github outputs ::error workflow commands with file and line numbers. Failed assertions appear as inline annotations on PR diffs, pointing to the exact Markdown line that broke.
    mdproof --report github runbooks/
    ::error file=runbooks/api-proof.md,line=12::Step 1 (Health check): expected output (not found in stdout)
    
    Combine with JUnit XML for both annotations and test summary:
    - run: mdproof --report github runbooks/
    - run: mdproof --report junit -o results.xml runbooks/

Documentation

  • Prerequisites section — README now lists system requirements (Docker for sandbox, jq for jq assertions) before install instructions
  • Troubleshooting guide — new docs/troubleshooting.md covers strict mode errors, jq setup, snapshot mismatches, timeouts, and common CLI issues
  • CLI discoverabilitymdproof --help tip added to Quick Start section

Full Changelog: v0.0.8...v0.0.9

v0.0.8

06 Apr 09:30

Choose a tag to compare

[0.0.8] - 2026-04-06

New Features

  • Working directory--workdir DIR sets the working directory for all step execution. Supports shell expansion (e.g., $HOME). Also configurable in mdproof.json via workdir. CLI flag overrides config.
    mdproof --workdir /tmp/workspace deploy-proof.md
    mdproof --workdir '$HOME/project' test-proof.md
    { "workdir": "/tmp/workspace" }

Bug Fixes

  • Working directory not applied — fixed runFile() not threading Workdir from RunOptions to the executor, which silently ignored --workdir
  • Shell quoting for workdir — the generated cd command now uses double quotes, preventing breakage with paths containing spaces and protecting against shell injection while preserving $VAR expansion

Full Changelog: v0.0.7...v0.0.8

v0.0.7

30 Mar 19:00

Choose a tag to compare

[0.0.7] - 2026-03-31

New Features

  • Retained failure artifacts--keep-failed-artifacts now preserves the failed runbook's executor artifact directory, and also keeps the isolated $HOME / $TMPDIR directory when --isolation per-runbook is active. You can enable it from the CLI or set keep_failed_artifacts in mdproof.json. The plain-text failure summary points directly to the retained script, env, stdout, and stderr paths so you can inspect the exact failed step without re-deriving temp locations.

    mdproof --keep-failed-artifacts runbooks/fixtures/failing-proof.md
    mdproof --isolation per-runbook --keep-failed-artifacts runbooks/fixtures/failing-proof.md
  • Failed-step script and env printing--print-step-script and --print-step-env dump the actual failed step script or captured execution environment to stderr, which makes debugging wrappers, temp files, and execution context much faster while keeping --report json clean on stdout. These defaults can also live in mdproof.json via print_step_script and print_step_env.

    mdproof --print-step-script --print-step-env runbooks/fixtures/failing-proof.md
    mdproof --print-step-script --print-step-env --report json runbooks/fixtures/failing-proof.md
    mdproof --report json runbooks/fixtures/failing-proof.md | jq '.artifact_dir, .steps[0].debug'

Full Changelog: v0.0.6...v0.0.7

v0.0.6

13 Mar 12:53

Choose a tag to compare

[0.0.6] - 2026-03-13

New Features

  • Source-aware failure reporting — failed assertions, command exits, and parser errors now point to the exact Markdown file and line number. Works in plain text, JSON (steps[].source, assertions[].source), and JUnit output.
    FAIL deploy-proof.md:13 Step 1: Assertion failure
    Assertion deploy-proof.md:13 expected output
    Command deploy-proof.md:7-10
    
    mdproof --report json test.md | jq '.steps[0].source.heading.start.line'

Breaking Changes

  • --watch flag removed — watch mode has been removed to sharpen product focus on executable runbooks, docs verification, and sandboxed smoke tests. Use an external file watcher (e.g., entr, watchexec) if you need re-run-on-change behavior.

Full Changelog: v0.0.5...v0.0.6

v0.0.5

12 Mar 07:39

Choose a tag to compare

[0.0.5] - 2026-03-12

New Features

  • Per-runbook isolation--isolation per-runbook gives each runbook a fresh $HOME and $TMPDIR, preventing cross-runbook pollution in directory mode. Also configurable in mdproof.json via isolation.

    mdproof --isolation per-runbook ./tests/
    { "isolation": "per-runbook" }
  • Sub-command variable persistence — variables now persist across --- blocks within the same step. Each sub-command saves its environment via EXIT trap, so export VAR=value (or any assignment, since set -a is active) in block 1 is visible in block 2. This reverses the v0.0.4 breaking change — --- blocks are now isolated subshells that still share environment state.

Bug Fixes

  • JSON array output for directory mode--report json stdout now emits a valid JSON array ([{...}, {...}]) when running multiple runbooks, instead of streaming independent objects. Single-file mode still outputs a single JSON object.
    mdproof --report json ./tests/ | jq '.[].summary'   # directory mode
    mdproof --report json test.md  | jq '.summary'      # single file

Full Changelog: v0.0.4...v0.0.5

v0.0.4

12 Mar 04:39

Choose a tag to compare

[0.0.4] - 2026-03-12

New Features

  • Per-step setup/teardown-step-setup and -step-teardown CLI flags run a command before/after each step. Setup failure marks the step as failed and skips the body; teardown failure is informational only. Also configurable in mdproof.json via step_setup / step_teardown.

    mdproof -step-setup 'rm -rf /tmp/test-*' test.md
    mdproof -step-teardown 'echo cleanup' test.md
    { "step_setup": "reset-db", "step_teardown": "dump-logs" }
  • Sub-command granular report — steps with --- separators now execute each block independently in its own subshell. The JSON report includes a sub_commands array with per-sub-command exit_code, stdout, stderr, and command. Plain text and JUnit reporters surface sub-command failure details.

Breaking Changes

  • --- separated blocks no longer share shell variables. Previously, multiple code blocks within a step (delimited by ---) ran as a single concatenated command sharing shell variables. They now run in independent subshells. Migration: if a runbook depends on variables flowing across --- blocks, merge those blocks into a single code block (remove the ---). This is the correct approach — --- semantically means "independent verification step."

Full Changelog: v0.0.3...v0.0.4

v0.0.3

11 Mar 05:36

Choose a tag to compare

[0.0.3] - 2026-03-11

New Features

  • JUnit XML output--report junit produces JUnit XML for native CI test result display (GitHub Actions, GitLab CI, Jenkins)
    mdproof --report junit tests/          # stdout
    mdproof --report junit -o report.xml tests/  # file output
    Full Changelog: v0.0.2...v0.0.3

v0.0.2

10 Mar 19:48

Choose a tag to compare

Full Changelog: v0.0.1...v0.0.2

v0.0.1

10 Mar 19:20

Choose a tag to compare