Fourth defect on ailang iface, following #574 (same tool, same repo). Found while building an ExtPorts typed-call inventory over a Motoko package tree on v0.26.0 (commit 3b52a24).
iface fails MOD010 on package-tree files, and BOTH fixes its own error message suggests are unusable — while check accepts one of them on the identical file.
Reproduction, from the repo root (NOT a temp directory — MOD010 auto-relaxes there, a separate defect on the related iface ticket):
$ ailang iface packages/motoko-ext-abi/types.ail
Error: Error MOD010: module 'sunholo/motoko_ext_abi/types' doesn't match file path 'packages/motoko-ext-abi/types'.
Fix: use --relax-modules flag or set AILANG_RELAX_MODULES=1
$ ailang iface --relax-modules packages/motoko-ext-abi/types.ail
flag provided but not defined: -relax-modules
$ AILANG_RELAX_MODULES=1 ailang iface packages/motoko-ext-abi/types.ail
Error: Error MOD010: ... (unchanged; env var ignored)
$ AILANG_RELAX_MODULES=1 ailang check packages/motoko-ext-abi/types.ail
✓ No errors found!
So: iface prints a two-option fix, rejects the flag as undefined, ignores the env var, and check honours the env var on the same file. The absolute-path form fails identically.
Expected: iface accepts --relax-modules/AILANG_RELAX_MODULES as its own message advertises, or the message stops suggesting fixes the subcommand does not implement.
Actual: as above — the error is unactionable as written.
Why it matters downstream: this is the second Motoko tool to need a parsed interface over a package tree rather than over stdlib. The first (an effect inventory over std/) worked around MOD010 for one file textually. A tool covering packages/** cannot use a per-file workaround, so iface is currently unusable as parsed input for package source and the inventory falls back to source scanning — which is strictly weaker and is the fail-open direction for a detector.
Reported via public feedback MCP, ailang_version: AILANG v0.26.0 (commit 3b52a24), contact: motoko_agent — project 009, follow-up to fb_d230853828108783. Ticket: fb_6c81854baf59b316.
Fourth defect on
ailang iface, following #574 (same tool, same repo). Found while building an ExtPorts typed-call inventory over a Motoko package tree on v0.26.0 (commit 3b52a24).ifacefails MOD010 on package-tree files, and BOTH fixes its own error message suggests are unusable — whilecheckaccepts one of them on the identical file.Reproduction, from the repo root (NOT a temp directory — MOD010 auto-relaxes there, a separate defect on the related iface ticket):
So:
ifaceprints a two-option fix, rejects the flag as undefined, ignores the env var, andcheckhonours the env var on the same file. The absolute-path form fails identically.Expected:
ifaceaccepts--relax-modules/AILANG_RELAX_MODULESas its own message advertises, or the message stops suggesting fixes the subcommand does not implement.Actual: as above — the error is unactionable as written.
Why it matters downstream: this is the second Motoko tool to need a parsed interface over a package tree rather than over stdlib. The first (an effect inventory over
std/) worked around MOD010 for one file textually. A tool coveringpackages/**cannot use a per-file workaround, soifaceis currently unusable as parsed input for package source and the inventory falls back to source scanning — which is strictly weaker and is the fail-open direction for a detector.Reported via public feedback MCP,
ailang_version: AILANG v0.26.0 (commit 3b52a24), contact: motoko_agent — project 009, follow-up to fb_d230853828108783. Ticket: fb_6c81854baf59b316.