loader: workspace search path for cross-module fixtures outside examples/ #34

Open
opened 2026-05-28 19:21:31 +02:00 by Brummel · 0 comments
Owner

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 canonical examples/ directory (specifically examples/fieldtest/ where the fieldtest skill places its consumers) cannot reach std_list.ail / std_maybe.ail / etc. without a per-fixture symlink workaround.

The kernel-extension-mechanics fieldtest committed examples/fieldtest/std_list.ail and examples/fieldtest/std_maybe.ail as symlinks to their examples/ neighbours so kem_1_list_running_sum.ail could pass ail 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.json candidate path even though the loader also resolves .ail. An LLM author reading the message would conclude they need to author a .ail.json file — actively misleading.

Recommended scope for a future tidy iteration:

  • (a) Loader looks up modules through a workspace-config search path (analogous to a Rust workspace [workspace.dependencies] list or a Python PYTHONPATH), so fixtures can sit outside the canonical example directory without symlinks. Sources: the entry's parent dir (current behaviour) + any explicitly-configured extra dirs.
  • (b) Diagnostic message updated to list both expected paths (<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.ail after deleting the std_list.ail / std_maybe.ail symlinks.

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 canonical `examples/` directory (specifically `examples/fieldtest/` where the fieldtest skill places its consumers) cannot reach `std_list.ail` / `std_maybe.ail` / etc. without a per-fixture symlink workaround. The kernel-extension-mechanics fieldtest committed `examples/fieldtest/std_list.ail` and `examples/fieldtest/std_maybe.ail` as symlinks to their `examples/` neighbours so `kem_1_list_running_sum.ail` could pass `ail 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.json` candidate path even though the loader also resolves `.ail`. An LLM author reading the message would conclude they need to author a `.ail.json` file — actively misleading. Recommended scope for a future tidy iteration: - (a) Loader looks up modules through a workspace-config search path (analogous to a Rust workspace `[workspace.dependencies]` list or a Python `PYTHONPATH`), so fixtures can sit outside the canonical example directory without symlinks. Sources: the entry's parent dir (current behaviour) + any explicitly-configured extra dirs. - (b) Diagnostic message updated to list both expected paths (`<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.ail` after deleting the std_list.ail / std_maybe.ail symlinks.
Brummel added the feature label 2026-05-28 19:21:31 +02:00
Sign in to join this conversation.