| name | explain-lading-config |
|---|---|
| description | Explains a lading.yaml config file from the regression test suite, using the lading Rust source as ground truth for field meanings and defaults. |
| user_invocable | true |
| argument-hint | [experiment name] |
| model | sonnet |
Explain what a lading regression test config does, grounded in lading source code.
# 1. Verify the lading checkout exists and is on a known branch
bash .agents/skills/explain-lading-config/scripts/validate-lading-checkout.sh
# 2. Resolve $ARGUMENTS to a lading.yaml path (exact/substring/glob/path)
bash .agents/skills/explain-lading-config/scripts/resolve-lading-config.sh "$ARGUMENTS"
# 3. Read the resolved file, then ground every field in lading source
# (see references/source-reading.md for the full strategy).
# 4. Write up the explanation following references/explanation-template.md.Defaults must be resolved to concrete values, not function names. Full workflow below.
Run .agents/skills/explain-lading-config/scripts/validate-lading-checkout.sh.
- Exit 0: script prints the current branch on stdout. If it is not
main, warn the user that explanations are grounded in a non-main branch, then continue. - Exit non-zero: the script prints a suggested
git clonecommand on stderr. Relay that to the user and stop.
Override the checkout location with LADING_DIR if needed.
Use .agents/skills/explain-lading-config/scripts/resolve-lading-config.sh to
avoid ad-hoc matching. The script enumerates experiments under any cases/
directory within test/regression/ (e.g. quality_gates/cases/,
logs/<group>/cases/) and test/regression/x-disabled-cases/ (disabled). Each
experiment is a <case>/lading/lading.yaml addressed by its case-directory
name; disabled rows are flagged with a trailing (disabled) column in the
listing. The ebpf/ subtrees (split-mode and config-only) are intentionally
out of scope; if a user asks about
one, tell them this skill doesn't cover it yet.
The script handles path-like inputs, substring case names, and shell
globs (*, ?).
If $ARGUMENTS is provided: run resolve-lading-config.sh "$ARGUMENTS".
- Exit 0: stdout is the resolved absolute path; read it.
- Exit 3 (ambiguous): stderr lists candidates.
- ≤ 4 candidates: use
AskUserQuestionto pick one, then read that path. - > 4 candidates (a broad substring like
ican match 20+): do not try to force them intoAskUserQuestion. Print the experiment names as a short bulleted list and ask the user to narrow the query and re-invoke/explain-lading-config <name>.
- ≤ 4 candidates: use
- Exit 2 (not found): stderr may include "did you mean?" suggestions — if
present, offer the suggestions to the user via
AskUserQuestion(up to 4 options) or as a short list; if not, relay the error and stop. - Exit 4 (wrong repo): the script is being run from outside the agent repo.
Relay the error verbatim and stop — the user needs to
cdinto the repo.
If the resolved path contains /x-disabled-cases/, flag this explicitly
in the explanation — the experiment exists on disk but is not currently
executed by SMP. Otherwise a user may assume it's live.
Reading very large configs: multi-sender configs (e.g.
uds_dogstatsd_20mb_12k_contexts_20_senders, ~870 lines) are usually
block-copies of one template with a few fields varying (typically only
seed). Before a full Read, check size and duplication:
wc -l <path> # scale check
grep -c '^ - ' <path> # top-level list entries
yq '.generator | length' <path> 2>/dev/null # if yq is presentFor highly-duplicated configs, Read only the first block (plus the
blackhole/target_metrics sections) and report the generator as
"N identical copies, seed differs" instead of walking every block. Spot-
check one later block to confirm uniformity.
If $ARGUMENTS is omitted: run resolve-lading-config.sh with no
argument. It emits <experiment>\t<path> lines for every discovered config.
Print the experiment names as a plain bulleted list to the user (preserving
the (disabled) markers) and ask them to type the name (or re-invoke the
skill with /explain-lading-config <name>).
Before explaining, read the lading source files that ground the populated
sections of the config. The detailed strategy (variant-to-module mapping,
grep-before-Read invariants, fallback for renamed files) lives in
references/source-reading.md — read it now.
Write the explanation following the structure in
references/explanation-template.md (generator summary, aggregate load,
blackhole sinks, target metrics, source references). Read it now.