Skip to content

Lint: fence the two load-bearing traps — W015 outer-mutation-without-local, W016 bare-predicate aliasing #396

Description

@InauguralPhysicist

Why. Two of the three documented silent-wrong traps are deliberate semantics that cannot be removed (observer state IS binding identity; is mutating outward is the scope model). Lua's lesson: traps left as documentation-only become a permanent per-user tax — the community verdict there was default-on linting (luacheck/strict.lua). Fence them at type-time.

What.

Acceptance. tests/test_lint.sh cases both ways (fires on the trap, silent on local-correct / explicit-predicate code); docs/DIAGNOSTICS.md contract entries; LSP surfaces both.

Effort: days. Source: 2026-07-04 survey (learnability dimension).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions