The line grammar
Every user-facing line is a prefix followed by one sentence, one concern per line:
All five channels occupy the same three glyph columns, so output stays aligned no matter what happened. The color carries the severity, not the glyph.
The debug channel only prints under
--debug or EXTENSION_DEBUG=1. Debug adds searchable key=value lines and never rewrites a line you would have seen anyway.
The identity card
At boot, a command prints one identity card per browser and dist pair:n/a placeholder, so row presence tells you what the session actually knows. A non-default binary adds a Binary row, and build swaps the Profile and Run ID rows for an Output row.
One fact once
Every session fact has exactly one home:- Session identity (versions, browser, extension ID, profile, binary) lives in the card, only.
- Events (compiled, recompiling, exited) are flow lines.
- Diagnostics are debug
key=valuelines.
Warnings fire at the moment they apply
A warning prints immediately before the action it concerns, not at the end of the run. When you see a yellow line, the very next thing the CLI does is the thing the warning describes. That ordering means you never scroll back through a summary to find out which step a warning belonged to.Add-on or Extension
The artifact noun follows the engine. On Gecko targets (Firefox, Waterfox, LibreWolf) the CLI saysAdd-on. On Chromium and Safari targets it says Extension. Edge ships extensions through a store named Add-ons, but the artifact is still an Extension.
Reading a colorless CI log
CI logs usually strip color, and meaning never lives only in color. In a colorless log:- Every
⏵⏵⏵line is info, success, warn, or error. Read the sentence, the copy states the outcome on its own. - Every
···line is debug output, safe to ignore unless you are diagnosing. - Errors follow a fixed anatomy: a label line, uppercase evidence rows such as
PATHorREASON, then an imperative remedy.
--output json for a single result envelope, and read session state from ready.json and events.ndjson under dist/extension-js/<browser>/.
Next steps
- Learn where the machine-readable session files live in Session artifacts.
- See the flags that shape output in Global flags.

