magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
1 min read

capture-filter

An advisory by default: it explains, and blocks nothing, on a filter over a run capture or log, which cuts the failure block apart.

What it catches

A filter over a run capture or log, which cuts the failure block apart.

Why

A failure prints five lines together: the target, the cause, an output ref, the command that reads that ref, and the command to reproduce it. A filter keeps the one line it matched and drops the rest, so grep 'cause:' keeps the symptom and discards the ref that reads the whole log two lines below it. A range print (sed -n '1,200p') is a filter too: it cuts by POSITION, and the block sits wherever the run left it. The better route is an output contract up front, -o jsonl --tee <file>, queried with jq. It ADVISES rather than refuses: most such filters are a search the reader needs, and a refused reader then reads the whole file into context. It fires only on a file a filter READS: a host task capture (tasks/<id>.output) or a run log (.magus/logs/<hex>.log). A pattern shaped like one, such as grep 'global\.output' cmd/, is not a capture.

Default and override

By default this rule takes the decision advise. A workspace sets it by name, in its root magusfile, to deny, advise or off:

magus\guard.builtins({"capture-filter": "deny"})

A loosening takes effect once it is committed; a tightening applies at once.

Seeing it

A verdict names its rule in brackets, which is how you got here:

advise [capture-filter]: ...

magus describe rule capture-filter prints the same entry at a terminal, and magus describe rules lists every rule this workspace enforces.

See also

guardrulescapture-filteradvise
Last updated (1a76274f)
Earlier changes on this page (2)

Full history ↗ · Blame source ↗

Glossary

Workspace

The magus root directory that owns a set of projects and shared config; the unit magus operates over. See workspace.

Magusfile

The magusfile.buzz that declares a project's targets (as export funs) and binds its spells. See targets.

Target

A named operation (build, test, ...) you invoke with magus run <target>; it may compose a spell's tool-native operations and depend on other targets. See targets.

Op

A single tool-native command a target composes (long form: operation); the middle of the work hierarchy (Spell to Op to Target). See operations.

Buzz

The language magusfiles are written in (the .buzz engine). See engines.

CI

An ordinary magusfile-defined target you compose yourself with magus\needs: magus does not hardcode its stages. Magus.RunCI treats it specially only in that it strips the rw charm, it is the anchor magus affected ci keys off, and a selected scope with no project declaring it is a load error rather than a silent no-op. See targets.

Run

One target executing under one magus invocation, such as magus run test web or magus affected ci. A run keeps its captured output behind an output reference. Every magus run is a run whether or not any job asked for it; see Job for how the two relate.

Advisor

One read-only check from the advice suite: it reads the changeset through magus and writes one titled section of findings. The same advisors run as a pull request comment in CI and inside magus diff --impact locally.

Conventions

Placeholders

Angle brackets mark a value you replace with your own; never type the brackets:

magus run <target>
magus completion <shell>    # e.g. bash, zsh, fish

<target>, <path>, <shell>, <name> and the like are stand-ins, not literal text.