Releases: runkids/mdproof
v0.0.9
[0.0.9] - 2026-04-08
New Features
- GitHub Actions annotations —
--report githuboutputs::errorworkflow 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/
Combine with JUnit XML for both annotations and test summary:::error file=runbooks/api-proof.md,line=12::Step 1 (Health check): expected output (not found in stdout)- 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.mdcovers strict mode errors, jq setup, snapshot mismatches, timeouts, and common CLI issues - CLI discoverability —
mdproof --helptip added to Quick Start section
Full Changelog: v0.0.8...v0.0.9
v0.0.8
[0.0.8] - 2026-04-06
New Features
- Working directory —
--workdir DIRsets the working directory for all step execution. Supports shell expansion (e.g.,$HOME). Also configurable inmdproof.jsonviaworkdir. 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 threadingWorkdirfromRunOptionsto the executor, which silently ignored--workdir - Shell quoting for workdir — the generated
cdcommand now uses double quotes, preventing breakage with paths containing spaces and protecting against shell injection while preserving$VARexpansion
Full Changelog: v0.0.7...v0.0.8
v0.0.7
[0.0.7] - 2026-03-31
New Features
-
Retained failure artifacts —
--keep-failed-artifactsnow preserves the failed runbook's executor artifact directory, and also keeps the isolated$HOME/$TMPDIRdirectory when--isolation per-runbookis active. You can enable it from the CLI or setkeep_failed_artifactsinmdproof.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-scriptand--print-step-envdump the actual failed step script or captured execution environment tostderr, which makes debugging wrappers, temp files, and execution context much faster while keeping--report jsonclean onstdout. These defaults can also live inmdproof.jsonviaprint_step_scriptandprint_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
[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-10mdproof --report json test.md | jq '.steps[0].source.heading.start.line'
Breaking Changes
--watchflag 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
[0.0.5] - 2026-03-12
New Features
-
Per-runbook isolation —
--isolation per-runbookgives each runbook a fresh$HOMEand$TMPDIR, preventing cross-runbook pollution in directory mode. Also configurable inmdproof.jsonviaisolation.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, soexport VAR=value(or any assignment, sinceset -ais 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 jsonstdout 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
[0.0.4] - 2026-03-12
New Features
-
Per-step setup/teardown —
-step-setupand-step-teardownCLI 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 inmdproof.jsonviastep_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 asub_commandsarray with per-sub-commandexit_code,stdout,stderr, andcommand. 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
[0.0.3] - 2026-03-11
New Features
- JUnit XML output —
--report junitproduces JUnit XML for native CI test result display (GitHub Actions, GitLab CI, Jenkins)Full Changelog: v0.0.2...v0.0.3mdproof --report junit tests/ # stdout mdproof --report junit -o report.xml tests/ # file output
v0.0.2
Full Changelog: v0.0.1...v0.0.2
v0.0.1
Full Changelog: https://github.com/runkids/mdproof/commits/v0.0.1