v1.0.2
[1.0.2] - 2026-08-15
Production audit: confinement, mock fail-closed, installer, and release gating.
- PATH-mocking a cmd.exe internal is a
MockErrorat stub write time, not a
silent skip, so the Python API cannot run the real internal. - Fixture
script,setup,teardown,copy, andequals_filepaths reject
drive-relative and other rooted values (C:foo, UNC), not only
Path.is_absolute(). - Fixture
regexalso rejects quantified alternation such as(a|a)*. Nested
quantifiers and the 512-character cap remain. - Uninstaller uses delayed
errorlevelafterrmdir, exits1when removal
fails, kills only%LOCALAPPDATA%\Programs\battest\bin\battest.exe, and
matches PATH entries by exact segment. - CI reads
[project].versionwithtomllib, including the previous commit's
pyproject.tomlvia UTF-8git show(bytes cannot be passed to
tomllib.loads). It dogfoods examples against the committed stub before
rebuilding it, creates the GitHub Release only after wheels exist, then
publishes to PyPI withtwine --skip-existing. - JSON Schema rejects reserved device stems, caps
regexlength, and rejects
rooted file matcher paths. Editors still require lowercase command names. - CI and Action docs continue to pin GitHub Actions to version tags, not commit
SHAs.