← board

The skeleton-language loop hides its /tmp paths in a shell variable

What happens

tools/testmgr_tmp_var_devtest.py fails: the recipe for test-core#src:test/test_ws_skeleton.ws reaches /tmp through the loop variable $$t rather than naming it. Because tools-devtest stops at the first failure, every devtest sorting after it goes unrun.

Why the guard cares

testmgr privatizes /tmp paths by rewriting the recipe text it executes, so two concurrent runs — a dev gate and the watcher, which is the normal state of this box — do not collide on the same file. A path assembled at runtime from $$t is invisible to that rewrite: both runs write the same file.

The fix

Spell the path in the recipe rather than deriving it in the loop body — the item list is the usual place, e.g. carry the output name in each list entry so the recipe text names $(TESTTMP)/test_ws_skeleton26 literally. Failing that, add the specific entries to ALLOWED in the guard with a reason.

Gate

make tools-devtest green (Track T's guard passes), and the skeleton tests still pass in the quick tier.

Log