loader: workspace search path for cross-module fixtures outside examples/ #34
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fieldtest F2 finding (kernel-extension-mechanics milestone, 2026-05-28). The workspace loader resolves
(import std_list)against the entry file's directory. Cross-module fixtures sitting outside the canonicalexamples/directory (specificallyexamples/fieldtest/where the fieldtest skill places its consumers) cannot reachstd_list.ail/std_maybe.ail/ etc. without a per-fixture symlink workaround.The kernel-extension-mechanics fieldtest committed
examples/fieldtest/std_list.ailandexamples/fieldtest/std_maybe.ailas symlinks to theirexamples/neighbours sokem_1_list_running_sum.ailcould passail check. The symlinks are the workaround; the friction tax falls on every future fieldtest.Secondary friction (same root cause, separately worth fixing): the diagnostic message for an unfound module names only the
.ail.jsoncandidate path even though the loader also resolves.ail. An LLM author reading the message would conclude they need to author a.ail.jsonfile — actively misleading.Recommended scope for a future tidy iteration:
[workspace.dependencies]list or a PythonPYTHONPATH), so fixtures can sit outside the canonical example directory without symlinks. Sources: the entry's parent dir (current behaviour) + any explicitly-configured extra dirs.<dir>/<name>.ail,<dir>/<name>.ail.json) and to suggest the workspace-search-path config addition.Either half-fix removes the symlink-as-workaround pattern. Together they fix both layers of the friction.
Spec source:
docs/specs/0053-fieldtest-kernel-extension-mechanics.md§ F2.Repro:
cd examples/fieldtest && ail check kem_1_list_running_sum.ailafter deleting the std_list.ail / std_maybe.ail symlinks.