blue-lang-cli 0.0.51

The blue command line: run, fmt, ast, erase, check.
blue-lang-cli-0.0.51 is not a library.

blue — the command line.

Every subcommand does one thing, per ★★ CLOSED-LOOP MASS-SYNTHESIS: a monolithic blue do-everything is the shape this forbids. Each one is a projection of the same pipeline, so blue ast and blue run cannot disagree about what a program means — they read the same stages from blue_lang_runtime::pipeline.

blue run     FILE            parse, check, erase, execute
blue fmt     FILE [--check]  the one formatting; --check exits 1 on drift
blue ast     FILE            the tatara-lisp form — homoiconicity, visible
blue erase   FILE            the tatara-lisp form after type erasure
blue check   FILE [--format json] [--fix]   every rule, the typing report
blue explain CODE | --list   what a diagnostic code means
blue test    FILE            check, then run the file's `test` blocks
blue deps    BLUEFILE        resolve the manifest's dependencies
blue posture BLUEFILE        the posture the manifest's floors require
blue bluefile --json BLUEFILE         the evaluated manifest, as JSON
blue bluefile --confirm BLUEFILE...   exit 1 unless each Bluefile.lock is fresh
blue lock    [DIR...]        evaluate, pin every source, write Bluefile.lock
blue config  [TIER]          the bounds blue is running with
blue lsp                     speak LSP over stdio
blue banner                  the wordmark — the blueshift ramp
blue shift   FILE            how far this is shifted, and what is shifting it
blue reference               the language, from its own tables, as JSON

blue deps and blue posture read a Bluefile, which is itself a blue program — see blue_lang_pkg::bluefile. posture was previously absent because there was no declaration surface to read a floor from; there is one now.

Neither fetches anything. Resolution is real; there is no registry client, so deps resolves against the distribution already on BLUE_PATH (via GitRegistry) and installs nothing. With no distribution there, it says so rather than printing a hollow resolution.

blue bluefile and blue lock are how nix reads blue without running it (theory/BLUE-STRUCTURE.md §5.1): lock commits the evaluation, and --confirm is the offline freshness gate the flake runs over every package. lock is the one subcommand that starts a process — nix flake prefetch, behind blue_lang_pkg::lock::Prefetch so no test reaches the network.

Every subcommand runs under the bounds in config — resolved once, here, and threaded down.

blue ast and blue erase are separate on purpose: the difference between them is the sliding scale, and being able to print both sides of it is how a reader sees that annotations are consumed rather than carried.