mix bloccs.lint (bloccs v0.12.0)

Copy Markdown View Source
mix bloccs.lint

Compiles the project, then for every bloccs node module (one exporting __bloccs_manifest__/0) walks its pure_core / effect_shell and the same-application helpers they call, transitively, applying the capability policy to every reachable call (Bloccs.Lint.Transitive).

The compile-time check in use Bloccs.Node only sees a node's own body and permits calls into same-app helpers without traversing them. This task closes that gap: it is what makes "the declared-effect facade is the only path to the world" hold through helper indirection, not just for directly-written calls. Run it in CI / mix check. Exits non-zero if any node has a transitive violation.

Requires modules compiled with debug info (the default for dev/test). A helper whose BEAM has no abstract code is reported as unanalyzable rather than assumed safe.

Options:

  • --app APP — limit to modules of the given OTP application (defaults to the current Mix project's :app).