v1.9.0
Changed
-
BREAKING — the ten
RLM_LLM_*environment variables are renamed toMASSA_AI_LLM_*.
The old names no longer do anything. There is no dual-read and no deprecation window:
an unrenamed variable is silently ignored, and the setting falls back to its default —
which forRLM_LLM_ENABLEDmeans every LLM-driven feature degrades to its rule-based
path.RLM_was the last surviving prefix from the pre-rename project identity, kept as
a compatibility boundary by two earlier renames; that boundary is now retired
(AD-010). Update any.env, shell profile, CI secret, compose file, or systemd unit:Retired Replacement RLM_LLM_ENABLEDMASSA_AI_LLM_ENABLEDRLM_LLM_BASE_URLMASSA_AI_LLM_BASE_URLRLM_LLM_API_KEYMASSA_AI_LLM_API_KEYRLM_LLM_MODELMASSA_AI_LLM_MODELRLM_LLM_CODE_MODELMASSA_AI_LLM_CODE_MODELRLM_LLM_TEMPERATUREMASSA_AI_LLM_TEMPERATURERLM_LLM_MAX_OUTPUT_TOKENSMASSA_AI_LLM_MAX_OUTPUT_TOKENSRLM_LLM_TIMEOUT_MSMASSA_AI_LLM_TIMEOUT_MSRLM_LLM_DISABLE_THINKMASSA_AI_LLM_DISABLE_THINKRLM_LLM_PROMPTMASSA_AI_LLM_PROMPTconfig.jsonis unaffected — its keys were already prefix-free, so there is no
config migration and no file to edit. Only environment variables change.The rename also fixed a bug it would otherwise have carried under a new name: only four
of the ten were listed inturbo.json'spassThroughEnv, so the other six arrived
undefinedin any test run underbun run testwhile working fine whenbun testwas
invoked directly. All ten are listed now. -
Coverage is no longer computed on every
bun test.bunfig.tomlset
coverage = true, so every invocation — including a single-file run in a debug loop —
paid to instrument and report coverage, and nothing ever failed on the result: the cost
of a gate without the gate. Coverage is now opt-in (--coverage) and enforced by the
new explicit gate below. -
The three divergent copies of
run-tests-isolated.tsare one shared module.
packages/core,apps/tools-apiandapps/mcp-clienteach carried their own copy
(236 / 124 / 141 lines) which had drifted apart; they now share
scripts/lib/run-tests-isolated.tsand supply only their own isolation predicate.
Observable behaviour is deliberately unchanged, including each package's distinct log
wording and its exit code for unknown arguments.
Added
-
bun run lintis a real gate. It was declared inturbo.jsonbut implemented by no
package, so it printed "No tasks were executed" and passed unconditionally. It now runs
oxlint (pinned exactly to1.76.0) with thecorrectnesscategory on and every other
category off. Adoption surfaced 337 violations; all 337 were fixed rather than
downgraded, so every correctness rule ships aterrorrather thanwarn. It runs over
the whole repository rather than per package, because turbo dispatches only to workspace
packages andscripts/andbenchmarks/— which held 21 of the 337 — are neither. CI
runs it in thebuildjob. No formatter was added and nothing was reformatted. -
bun run test:coverageenforces a coverage floor. 90% line coverage per file, with
nine documented exclusions, each carrying the justification that earned it. Both the
floor and the exclusions live inscripts/check-coverage.tsas executable data rather
than as prose in a scratch file that gets rewritten. The gate refuses to run unless the
dedicated test database is configured, because 50 core suites are gated behind
describe.skipIf(!DEDICATED_DB)and would otherwise report near-zero coverage for
subjects whose own tests are sitting skipped beside them. It also runs the suites against
a scratchXDG_CONFIG_HOME, so the numbers are a property of the tree rather than of
whatever is in the developer's~/.config/massa-ai/config.json.
Fixed
- Unit tests no longer make live LLM calls against the developer's own configuration.
CodeCompressorresolvesllm.enabledfrom~/.config/massa-ai/config.json, so on a
machine with a local Ollama configured, tests that construct it without pinning the
test seam issued real network requests — measured at 42 s on a cold model load against
a 5 s per-test budget, and 0.7 s once warm. That is why they looked flaky rather than
broken, and why CI, which has no configuration file, never saw it. The affected tests
now inject the seam their subject already exposes.