Found while building and exercising the v0.5.0-rc1 Windows freeze before tagging. Cosmetic and pre-existing — filing so it is not rediscovered as a freeze regression.
What happens
The program name in usage/help/parse-error text derives from sys.argv[0]'s basename rather than a fixed "tan". Verified both ways from the same clean venv:
- frozen:
tan.exe
python -m tan: python -m tan
release.yml renames the artefact to its target-triple asset name on upload, so what a user who downloads and runs it directly actually sees is:
Usage: tan-x86_64-pc-windows-msvc.exe [OPTIONS] COMMAND [ARGS]...
and the same string lands inside the JSON envelope, in data.message for cli.parse-error. That second one is the part worth caring about: the envelope is a consumer contract, and a machine-readable field whose content varies by how the binary was named is a poor thing to have there.
Users are told to put the binary on PATH as tan, so most will never see it — but the ones who run the downloaded file in place, and any consumer keying off that message, will.
Also, unrelated and equally cosmetic
tan init --som <SKU> rewrites the scaffolded board.yaml's sku: value but leaves the trailing comment stale — e.g. sku: E1M-V2N101 # Alif Ensemble E8 SoM. Substituting the SKU should either update or drop that comment.
Not a blocker
Neither affects behaviour. Recording both because the freeze verification that surfaced them was a one-off (tan-cli#278: CI's first blink/first install still smoke-test the Rust binary, so nothing routinely exercises the real asset).
Found while building and exercising the v0.5.0-rc1 Windows freeze before tagging. Cosmetic and pre-existing — filing so it is not rediscovered as a freeze regression.
What happens
The program name in usage/help/parse-error text derives from
sys.argv[0]'s basename rather than a fixed"tan". Verified both ways from the same clean venv:tan.exepython -m tan:python -m tanrelease.ymlrenames the artefact to its target-triple asset name on upload, so what a user who downloads and runs it directly actually sees is:and the same string lands inside the JSON envelope, in
data.messageforcli.parse-error. That second one is the part worth caring about: the envelope is a consumer contract, and a machine-readable field whose content varies by how the binary was named is a poor thing to have there.Users are told to put the binary on PATH as
tan, so most will never see it — but the ones who run the downloaded file in place, and any consumer keying off that message, will.Also, unrelated and equally cosmetic
tan init --som <SKU>rewrites the scaffoldedboard.yaml'ssku:value but leaves the trailing comment stale — e.g.sku: E1M-V2N101 # Alif Ensemble E8 SoM. Substituting the SKU should either update or drop that comment.Not a blocker
Neither affects behaviour. Recording both because the freeze verification that surfaced them was a one-off (tan-cli#278: CI's
first blink/first installstill smoke-test the Rust binary, so nothing routinely exercises the real asset).