Sensitivity & Robustness Experimental Design Lens
Philosophical Mode: Robustness
Primary Question: "Which assumptions are load-bearing?"
Focus: Ablation Structure, Preprocessing Sensitivity, Metric Sensitivity, Hyperparameter Sensitivity, Distribution Shift
Arguments
/autoskillit:exp-lens-sensitivity-robustness [context_path] [experiment_plan_path]
- context_path (optional positional arg 1) — Absolute path to a lens context file
containing IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria.
If provided, read this file before beginning analysis to obtain structured context.
If omitted, discover context by exploring the CWD.
- experiment_plan_path (optional positional arg 2) — Absolute path to the full
experiment plan. If provided, read for complete experimental methodology and design.
If omitted, locate the experiment plan by exploring the CWD.
When to Use
- Results may depend on specific preprocessing choices
- Need to verify robustness of conclusions across conditions
- Ablation study seems incomplete or cherry-picked
- User invokes
/autoskillit:exp-lens-sensitivity-robustness or /autoskillit:make-experiment-diag sensitivity
Critical Constraints
NEVER:
- Modify any source code or experiment files
- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves
- Treat "untested" as equivalent to "robust"
- Create files outside
{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/
- Run subagents in the background (
run_in_background: true is prohibited)
ALWAYS:
Build a full sensitivity matrix (choices x perturbation types)
Classify every analytic choice as load-bearing, minor, or untested
Flag cases where the most impactful choices are the least tested
Distinguish between ablations that were run and choices that were simply fixed
BEFORE creating any diagram, LOAD the /autoskillit:mermaid skill using the Skill tool - this is MANDATORY
If the Skill tool cannot be used (disable-model-invocation) or refuses this invocation, do NOT proceed with diagram creation. Abort this step and omit the diagram from output.
Write output to {{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{YYYY-MM-DD_HHMMSS}.md
After writing the file, emit the structured output token as literal plain text with no
markdown formatting on the token name (the adjudicator performs a regex match):
diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{...}.md
Analysis Workflow
Step 0: Parse optional arguments
If positional arg 1 (context_path) is provided and the file exists, read it to obtain
IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional
arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full
methodology. Use this structured context as the foundation for Steps 1-5; skip the CWD
exploration for these fields if the context file supplies them.
Step 1: Launch Parallel Exploration Subagents
Spawn Explore subagents to investigate:
Analytic Choices Made
- Find all decision points in the analysis pipeline
- Look for: choice, option, default, parameter, threshold, method, alternative
Ablation Coverage
- Find which factors have been ablated
- Look for: ablation, without, remove, disable, vary, sweep, drop
Preprocessing Variations
- Find preprocessing steps that could be done differently
- Look for: normalize, tokenize, augment, crop, resize, filter, clean, impute
Hyperparameter Sensitivity
- Find which hyperparameters were tuned vs fixed
- Look for: learning_rate, batch_size, epochs, dropout, hidden_size, temperature, alpha, beta
Distribution/Environment Variations
- Find evidence of testing under different conditions
- Look for: shift, domain, transfer, cross, out_of_distribution, generalize, different
Step 2: Build the Sensitivity Matrix
Rows = analytic choices. Columns = perturbation types (remove, change, stress).
For each cell: Does the conclusion survive the perturbation?
Step 3: Classify Analytic Choices
CRITICAL — Analyze Assumption Load:
For every analytic choice:
- What happens if this choice were made differently?
- Is there evidence from ablations, sweeps, or prior literature?
- Are the most impactful choices the least tested?
Classify each choice as:
- Load-bearing: Conclusion changes if this choice changes
- Minor: Conclusion is robust to changes in this choice
- Untested: No evidence either way
Step 4: Create the Optional Perturbation Diagram
If a diagram adds value, create a simplified flowchart. This is OPTIONAL for this hybrid lens — the tables are the primary output.
Direction: TB (choices flow down through perturbation to conclusion stability)
Subgraphs: "ANALYTIC CHOICES", "PERTURBATIONS TESTED", "CONCLUSION STABILITY"
Node Styling:
stateNode class: analytic choice nodes
handler class: perturbation type nodes
output class: stable conclusion nodes
gap class: load-bearing untested choice nodes
detector class: sensitivity threshold nodes
Step 5: Write Output
Write the analysis to: {{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{YYYY-MM-DD_HHMMSS}.md (relative to the current working directory)
Output Template
# Sensitivity & Robustness Analysis: {Experiment Name}
**Lens:** Sensitivity & Robustness (Robustness)
**Question:** Which assumptions are load-bearing?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Sensitivity Matrix
| Analytic Choice | Remove | Change Value | Stress Test | Overall Classification |
|----------------|--------|-------------|-------------|------------------------|
| {choice name} | Stable / Fragile / Untested | Stable / Fragile / Untested | Stable / Fragile / Untested | Load-bearing / Minor / Untested |
## Load-Bearing Assumptions
| Assumption | Evidence Type | Impact if Changed | Tested? |
|------------|--------------|-------------------|---------|
| {assumption} | Ablation / Sweep / Literature / None | High / Medium / Low | Yes / No |
## Ablation Coverage Assessment
| Factor | Ablated? | Result | Interpretation |
|--------|----------|--------|----------------|
| {factor name} | Yes / No | {delta metric if yes} | Conclusion holds / Fragile / Unknown |
## Robustness Profile
| Dimension | Status | Notes |
|-----------|--------|-------|
| Preprocessing choices | Robust / Fragile / Untested | {detail} |
| Hyperparameter choices | Robust / Fragile / Untested | {detail} |
| Metric choices | Robust / Fragile / Untested | {detail} |
| Distribution shift | Robust / Fragile / Untested | {detail} |
## Perturbation Diagram (Optional)
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
flowchart TB
%% CLASS DEFINITIONS %%
classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;
classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;
classDef integration fill:#c62828,stroke:#ef9a9a,stroke-width:2px,color:#fff;
subgraph Choices ["ANALYTIC CHOICES"]
CHOICE1["Preprocessing Choice<br/>━━━━━━━━━━<br/>{e.g., normalization}"]
CHOICE2["Model Choice<br/>━━━━━━━━━━<br/>{e.g., architecture}"]
LOAD_BEARING["Load-Bearing Choice<br/>━━━━━━━━━━<br/>{untested critical choice}"]
end
subgraph Perturbations ["PERTURBATIONS TESTED"]
PERTURB1["Remove<br/>━━━━━━━━━━<br/>Ablation"]
PERTURB2["Change Value<br/>━━━━━━━━━━<br/>Sensitivity sweep"]
THRESHOLD["Sensitivity Threshold<br/>━━━━━━━━━━<br/>{delta that changes conclusion}"]
end
subgraph Stability ["CONCLUSION STABILITY"]
STABLE["Stable Conclusion<br/>━━━━━━━━━━<br/>{holds under perturbation}"]
end
CHOICE1 --> PERTURB1
CHOICE2 --> PERTURB2
PERTURB1 --> THRESHOLD
PERTURB2 --> THRESHOLD
THRESHOLD --> STABLE
LOAD_BEARING -.->|"untested risk"| THRESHOLD
class CHOICE1,CHOICE2 stateNode;
class LOAD_BEARING gap;
class PERTURB1,PERTURB2 handler;
class THRESHOLD detector;
class STABLE output;
Color Legend:
| Color |
Category |
Description |
| Teal |
Analytic Choices |
Decision points in the pipeline |
| Yellow |
Load-Bearing Untested |
Critical choices with no perturbation evidence |
| Orange |
Perturbations |
Types of tests applied |
| Red |
Sensitivity Thresholds |
Points where conclusion may change |
| Dark Teal |
Stable Conclusions |
Results robust to perturbation |
Recommendations
- {Most urgent ablation to run — highest impact untested choice}
- {Preprocessing sensitivity test needed}
- {Distribution shift or domain generalization test needed}
---
## Pre-Diagram Checklist
Before creating the diagram, verify:
- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool
- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)
- [ ] Diagram will include a color legend table
---
## Related Skills
- `/autoskillit:make-experiment-diag` - Parent skill for lens selection
- `/autoskillit:mermaid` - MUST BE LOADED before creating diagram
- `/autoskillit:exp-lens-estimand-clarity` - For clarifying which conclusions are being stress-tested
- `/autoskillit:exp-lens-iterative-learning` - For tracking robustness improvements across experiment iterations
1---2name: exp-lens-sensitivity-robustness3description: Create Sensitivity & Robustness experimental design analysis identifying load-bearing analytic choices and untested perturbations. Robustness lens answering "Which assumptions are load-bearing?"4---56# Sensitivity & Robustness Experimental Design Lens78**Philosophical Mode:** Robustness9**Primary Question:** "Which assumptions are load-bearing?"10**Focus:** Ablation Structure, Preprocessing Sensitivity, Metric Sensitivity, Hyperparameter Sensitivity, Distribution Shift1112## Arguments1314`/autoskillit:exp-lens-sensitivity-robustness [context_path] [experiment_plan_path]`1516- **context_path** (optional positional arg 1) — Absolute path to a lens context file17 containing IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria.18 If provided, read this file before beginning analysis to obtain structured context.19 If omitted, discover context by exploring the CWD.20- **experiment_plan_path** (optional positional arg 2) — Absolute path to the full21 experiment plan. If provided, read for complete experimental methodology and design.22 If omitted, locate the experiment plan by exploring the CWD.2324## When to Use2526- Results may depend on specific preprocessing choices27- Need to verify robustness of conclusions across conditions28- Ablation study seems incomplete or cherry-picked29- User invokes `/autoskillit:exp-lens-sensitivity-robustness` or `/autoskillit:make-experiment-diag sensitivity`3031## Critical Constraints3233**NEVER:**34- Modify any source code or experiment files35- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves36- Treat "untested" as equivalent to "robust"37- Create files outside `{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/`38- Run subagents in the background (`run_in_background: true` is prohibited)3940**ALWAYS:**41- Build a full sensitivity matrix (choices x perturbation types)42- Classify every analytic choice as load-bearing, minor, or untested43- Flag cases where the most impactful choices are the least tested44- Distinguish between ablations that were run and choices that were simply fixed45- BEFORE creating any diagram, LOAD the `/autoskillit:mermaid` skill using the Skill tool - this is MANDATORY46- If the Skill tool cannot be used (disable-model-invocation) or refuses this invocation, do NOT proceed with diagram creation. Abort this step and omit the diagram from output.47- Write output to `{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{YYYY-MM-DD_HHMMSS}.md`48- After writing the file, emit the structured output token as **literal plain text** with no49 markdown formatting on the token name (the adjudicator performs a regex match):5051 ```52 diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{...}.md53 ```5455---5657## Analysis Workflow5859### Step 0: Parse optional arguments6061If positional arg 1 (context_path) is provided and the file exists, read it to obtain62IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional63arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full64methodology. Use this structured context as the foundation for Steps 1-5; skip the CWD65exploration for these fields if the context file supplies them.6667### Step 1: Launch Parallel Exploration Subagents6869Spawn Explore subagents to investigate:7071**Analytic Choices Made**72- Find all decision points in the analysis pipeline73- Look for: choice, option, default, parameter, threshold, method, alternative7475**Ablation Coverage**76- Find which factors have been ablated77- Look for: ablation, without, remove, disable, vary, sweep, drop7879**Preprocessing Variations**80- Find preprocessing steps that could be done differently81- Look for: normalize, tokenize, augment, crop, resize, filter, clean, impute8283**Hyperparameter Sensitivity**84- Find which hyperparameters were tuned vs fixed85- Look for: learning_rate, batch_size, epochs, dropout, hidden_size, temperature, alpha, beta8687**Distribution/Environment Variations**88- Find evidence of testing under different conditions89- Look for: shift, domain, transfer, cross, out_of_distribution, generalize, different9091### Step 2: Build the Sensitivity Matrix9293Rows = analytic choices. Columns = perturbation types (remove, change, stress).9495For each cell: Does the conclusion survive the perturbation?9697### Step 3: Classify Analytic Choices9899**CRITICAL — Analyze Assumption Load:**100For every analytic choice:101- What happens if this choice were made differently?102- Is there evidence from ablations, sweeps, or prior literature?103- Are the most impactful choices the least tested?104105Classify each choice as:106- **Load-bearing**: Conclusion changes if this choice changes107- **Minor**: Conclusion is robust to changes in this choice108- **Untested**: No evidence either way109110### Step 4: Create the Optional Perturbation Diagram111112If a diagram adds value, create a simplified flowchart. This is OPTIONAL for this hybrid lens — the tables are the primary output.113114**Direction:** `TB` (choices flow down through perturbation to conclusion stability)115116**Subgraphs:** "ANALYTIC CHOICES", "PERTURBATIONS TESTED", "CONCLUSION STABILITY"117118**Node Styling:**119- `stateNode` class: analytic choice nodes120- `handler` class: perturbation type nodes121- `output` class: stable conclusion nodes122- `gap` class: load-bearing untested choice nodes123- `detector` class: sensitivity threshold nodes124125### Step 5: Write Output126127Write the analysis to: `{{AUTOSKILLIT_TEMP}}/exp-lens-sensitivity-robustness/exp_diag_sensitivity_robustness_{YYYY-MM-DD_HHMMSS}.md` (relative to the current working directory)128129---130131## Output Template132133```markdown134# Sensitivity & Robustness Analysis: {Experiment Name}135136**Lens:** Sensitivity & Robustness (Robustness)137**Question:** Which assumptions are load-bearing?138**Date:** {YYYY-MM-DD}139**Scope:** {What was analyzed}140141## Sensitivity Matrix142143| Analytic Choice | Remove | Change Value | Stress Test | Overall Classification |144|----------------|--------|-------------|-------------|------------------------|145| {choice name} | Stable / Fragile / Untested | Stable / Fragile / Untested | Stable / Fragile / Untested | Load-bearing / Minor / Untested |146147## Load-Bearing Assumptions148149| Assumption | Evidence Type | Impact if Changed | Tested? |150|------------|--------------|-------------------|---------|151| {assumption} | Ablation / Sweep / Literature / None | High / Medium / Low | Yes / No |152153## Ablation Coverage Assessment154155| Factor | Ablated? | Result | Interpretation |156|--------|----------|--------|----------------|157| {factor name} | Yes / No | {delta metric if yes} | Conclusion holds / Fragile / Unknown |158159## Robustness Profile160161| Dimension | Status | Notes |162|-----------|--------|-------|163| Preprocessing choices | Robust / Fragile / Untested | {detail} |164| Hyperparameter choices | Robust / Fragile / Untested | {detail} |165| Metric choices | Robust / Fragile / Untested | {detail} |166| Distribution shift | Robust / Fragile / Untested | {detail} |167168## Perturbation Diagram (Optional)169170```mermaid171%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%172flowchart TB173 %% CLASS DEFINITIONS %%174 classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;175 classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;176 classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;177 classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;178 classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;179 classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;180 classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;181 classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;182 classDef integration fill:#c62828,stroke:#ef9a9a,stroke-width:2px,color:#fff;183184 subgraph Choices ["ANALYTIC CHOICES"]185 CHOICE1["Preprocessing Choice<br/>━━━━━━━━━━<br/>{e.g., normalization}"]186 CHOICE2["Model Choice<br/>━━━━━━━━━━<br/>{e.g., architecture}"]187 LOAD_BEARING["Load-Bearing Choice<br/>━━━━━━━━━━<br/>{untested critical choice}"]188 end189190 subgraph Perturbations ["PERTURBATIONS TESTED"]191 PERTURB1["Remove<br/>━━━━━━━━━━<br/>Ablation"]192 PERTURB2["Change Value<br/>━━━━━━━━━━<br/>Sensitivity sweep"]193 THRESHOLD["Sensitivity Threshold<br/>━━━━━━━━━━<br/>{delta that changes conclusion}"]194 end195196 subgraph Stability ["CONCLUSION STABILITY"]197 STABLE["Stable Conclusion<br/>━━━━━━━━━━<br/>{holds under perturbation}"]198 end199200 CHOICE1 --> PERTURB1201 CHOICE2 --> PERTURB2202 PERTURB1 --> THRESHOLD203 PERTURB2 --> THRESHOLD204 THRESHOLD --> STABLE205 LOAD_BEARING -.->|"untested risk"| THRESHOLD206207 class CHOICE1,CHOICE2 stateNode;208 class LOAD_BEARING gap;209 class PERTURB1,PERTURB2 handler;210 class THRESHOLD detector;211 class STABLE output;212```213214**Color Legend:**215| Color | Category | Description |216|-------|----------|-------------|217| Teal | Analytic Choices | Decision points in the pipeline |218| Yellow | Load-Bearing Untested | Critical choices with no perturbation evidence |219| Orange | Perturbations | Types of tests applied |220| Red | Sensitivity Thresholds | Points where conclusion may change |221| Dark Teal | Stable Conclusions | Results robust to perturbation |222223## Recommendations2242251. {Most urgent ablation to run — highest impact untested choice}2262. {Preprocessing sensitivity test needed}2273. {Distribution shift or domain generalization test needed}228```229230---231232## Pre-Diagram Checklist233234Before creating the diagram, verify:235236- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool237- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)238- [ ] Diagram will include a color legend table239240---241242## Related Skills243244- `/autoskillit:make-experiment-diag` - Parent skill for lens selection245- `/autoskillit:mermaid` - MUST BE LOADED before creating diagram246- `/autoskillit:exp-lens-estimand-clarity` - For clarifying which conclusions are being stress-tested247- `/autoskillit:exp-lens-iterative-learning` - For tracking robustness improvements across experiment iterations