Measurement Validity Experimental Design Lens
Philosophical Mode: Psychometric
Primary Question: "Do measurements justify the interpretation?"
Focus: Metric-Construct Alignment, Proxy Validity, Reliability, Sensitivity, Consequential Validity
When to Use
- Metrics may not measure what they claim to; proxy metrics used instead of true objectives
- Evaluation scores treated as "truth" without validation
- Metric choice is contested or under-specified
- User invokes
/exp-lens-measurement-validity or /make-experiment-diag measurement
Critical Constraints
NEVER:
- Modify any source code or experimental artifacts
- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves
ALWAYS:
- Treat every reported metric as a claim requiring a validity argument
- Enumerate known failure modes: gaming, saturation, proxy collapse, and aggregation artifacts
- Assess reliability (stability under reruns) and sensitivity (ability to distinguish meaningful differences) for each metric
- Identify where metric-construct alignment is weak or unsupported by evidence
- BEFORE creating any optional diagram, LOAD the
/mermaid skill using the Skill tool - this is MANDATORY
Analysis Workflow
Step 1: Launch Parallel Exploration Subagents
Spawn Explore subagents to investigate:
Metric Definitions
- Find all metrics computed and reported
- Look for: metric, score, accuracy, f1, precision, recall, bleu, rouge, loss, error_rate, latency
Intended Interpretations
- Find what conclusions are drawn from each metric
- Look for: better, worse, improves, indicates, measures, reflects, captures, proxy
Metric Computation Details
- Find exactly how each metric is computed (aggregation, weighting, edge cases)
- Look for: average, macro, micro, weighted, threshold, cutoff, aggregate
Alternative Metrics Considered
- Find whether alternative metrics were evaluated and why they were rejected
- Look for: also measured, alternative, we chose, instead of, limitation
Construct-Metric Gap
- Find where the metric diverges from the construct it claims to measure
- Look for: limitation, caveat, imperfect, proxy, approximate, does not capture
Step 2: Build Validity Arguments
For each reported metric, construct a validity argument:
- What construct does this metric claim to measure?
- What evidence supports this claim?
- What are the known failure modes (gaming, saturation, proxy collapse)?
- Is the metric reliable (stable under reruns)?
- Is it sensitive (can it distinguish meaningful differences)?
Step 3: Analyze Metric-Construct Alignment
CRITICAL — for every metric-to-claim link:
- Is there a logical argument connecting the number to the concept?
- Could a system score high on this metric while being poor on the intended construct?
- What would gaming look like?
- Does the aggregation method (macro vs micro, mean vs median) preserve the intended construct?
- Are there known saturation regimes where the metric stops being informative?
Step 4: Optional Metric-Construct Mapping Diagram
This lens does NOT produce a primary mermaid diagram. The output is a structured validity argument. An optional simplified metric mapping diagram may be included if it clarifies the metric-construct relationship.
If including the optional diagram:
Direction: LR (constructs on left, metrics on right)
Minimal diagram: Construct nodes on the left, Metric nodes on the right, with edge labels indicating strength of alignment
Node Styling:
cli class: Constructs and intended properties being claimed
output class: Measured metrics (what is actually computed)
gap class: Weak or missing alignments, proxy collapses
handler class: Proxy relationships and intermediate mappings
Connection Types:
- Solid arrows for strong, well-evidenced alignment
- Dashed arrows for proxy or contested alignment
- Edge labels naming the type of relationship or its weakness
Step 5: Write Output
Write the output to: temp/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md
Output Template
# Measurement Validity Analysis: {Experiment Name}
**Lens:** Measurement Validity (Psychometric)
**Question:** Do measurements justify the interpretation?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Metric Inventory
| Metric | Construct Claimed | Computation | Reliability | Sensitivity |
|--------|-------------------|-------------|-------------|-------------|
| {metric name} | {what it claims to measure} | {aggregation/formula} | {stable / unstable / unknown} | {high / low / saturated} |
## Validity Arguments
### {Metric Name}
**Construct claimed:** {The property this metric is presented as measuring}
**Evidence for alignment:**
- {Supporting argument or citation}
**Evidence against alignment / known failure modes:**
- {Failure mode 1: e.g., gameable by surface pattern matching}
- {Failure mode 2: e.g., proxy collapses when distribution shifts}
**Reliability assessment:** {Stable under reruns? Sensitive to seed?}
**Sensitivity assessment:** {Can it distinguish meaningful differences in the relevant range?}
**Verdict:** {Strong / Partial / Weak / Unsupported}
---
## Proxy Collapse Risks
| Metric | Proxy For | Collapse Condition | Consequence |
|--------|-----------|--------------------|-------------|
| {metric} | {true construct} | {when proxy diverges from construct} | {what is falsely concluded} |
## Gaming Vulnerabilities
| Metric | Gaming Strategy | Detection Method |
|--------|----------------|-----------------|
| {metric} | {how to maximize score without improving construct} | {how to detect gaming} |
## Optional: Metric-Construct Mapping Diagram
{Include only if it clarifies alignment; omit if argument tables are sufficient}
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
flowchart LR
%% 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 Constructs ["Intended Constructs"]
C1["Construct A<br/>━━━━━━━━━━<br/>The property claimed"]
C2["Construct B<br/>━━━━━━━━━━<br/>Another property"]
end
subgraph Metrics ["Measured Metrics"]
M1["Metric X<br/>━━━━━━━━━━<br/>Computation method"]
M2["Metric Y<br/>━━━━━━━━━━<br/>Computation method"]
end
subgraph Gaps ["Weak / Missing Alignments"]
G1["Proxy Collapse Risk<br/>━━━━━━━━━━<br/>Condition for divergence"]
end
%% ALIGNMENTS %%
C1 -->|"strong alignment"| M1
C2 -->|"proxy (weak)"| M2
M2 -.->|"diverges under"| G1
%% CLASS ASSIGNMENTS %%
class C1,C2 cli;
class M1,M2 output;
class G1 gap;
Color Legend:
| Color |
Category |
Description |
| Dark Blue |
Construct |
Intended properties being claimed |
| Dark Teal |
Metric |
What is actually computed and reported |
| Yellow |
Gap |
Weak alignment, proxy collapse, or missing evidence |
| Orange |
Proxy |
Intermediate proxy relationships |
Summary Verdict
| Metric |
Verdict |
Primary Concern |
| {metric} |
{Strong / Partial / Weak / Unsupported} |
{One-line summary of the key validity concern} |
---
## Pre-Diagram Checklist
Before creating any optional diagram, verify:
- [ ] LOADED `/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
- `/make-experiment-diag` - Parent skill for lens selection
- `/mermaid` - MUST BE LOADED before creating any optional diagram
- `/exp-lens-estimand-clarity` - For auditing the upstream claim the metric is meant to support
- `/exp-lens-benchmark-representativeness` - For auditing whether the evaluation set generalizes
1---2name: exp-lens-measurement-validity3description: Analyze measurement validity for experimental design — auditing metric-construct alignment, proxy validity, reliability, sensitivity, and consequential validity. Argumentative lens answering "Do measurements justify the interpretation?"4---56# Measurement Validity Experimental Design Lens78**Philosophical Mode:** Psychometric9**Primary Question:** "Do measurements justify the interpretation?"10**Focus:** Metric-Construct Alignment, Proxy Validity, Reliability, Sensitivity, Consequential Validity1112## When to Use1314- Metrics may not measure what they claim to; proxy metrics used instead of true objectives15- Evaluation scores treated as "truth" without validation16- Metric choice is contested or under-specified17- User invokes `/exp-lens-measurement-validity` or `/make-experiment-diag measurement`1819## Critical Constraints2021**NEVER:**22- Modify any source code or experimental artifacts23- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves2425**ALWAYS:**26- Treat every reported metric as a claim requiring a validity argument27- Enumerate known failure modes: gaming, saturation, proxy collapse, and aggregation artifacts28- Assess reliability (stability under reruns) and sensitivity (ability to distinguish meaningful differences) for each metric29- Identify where metric-construct alignment is weak or unsupported by evidence30- BEFORE creating any optional diagram, LOAD the `/mermaid` skill using the Skill tool - this is MANDATORY3132---3334## Analysis Workflow3536### Step 1: Launch Parallel Exploration Subagents3738Spawn Explore subagents to investigate:3940**Metric Definitions**41- Find all metrics computed and reported42- Look for: metric, score, accuracy, f1, precision, recall, bleu, rouge, loss, error_rate, latency4344**Intended Interpretations**45- Find what conclusions are drawn from each metric46- Look for: better, worse, improves, indicates, measures, reflects, captures, proxy4748**Metric Computation Details**49- Find exactly how each metric is computed (aggregation, weighting, edge cases)50- Look for: average, macro, micro, weighted, threshold, cutoff, aggregate5152**Alternative Metrics Considered**53- Find whether alternative metrics were evaluated and why they were rejected54- Look for: also measured, alternative, we chose, instead of, limitation5556**Construct-Metric Gap**57- Find where the metric diverges from the construct it claims to measure58- Look for: limitation, caveat, imperfect, proxy, approximate, does not capture5960### Step 2: Build Validity Arguments6162For each reported metric, construct a validity argument:631. What construct does this metric claim to measure?642. What evidence supports this claim?653. What are the known failure modes (gaming, saturation, proxy collapse)?664. Is the metric reliable (stable under reruns)?675. Is it sensitive (can it distinguish meaningful differences)?6869### Step 3: Analyze Metric-Construct Alignment7071**CRITICAL — for every metric-to-claim link:**72- Is there a logical argument connecting the number to the concept?73- Could a system score high on this metric while being poor on the intended construct?74- What would gaming look like?75- Does the aggregation method (macro vs micro, mean vs median) preserve the intended construct?76- Are there known saturation regimes where the metric stops being informative?7778### Step 4: Optional Metric-Construct Mapping Diagram7980This lens does NOT produce a primary mermaid diagram. The output is a structured validity argument. An optional simplified metric mapping diagram may be included if it clarifies the metric-construct relationship.8182If including the optional diagram:8384**Direction:** `LR` (constructs on left, metrics on right)8586**Minimal diagram:** Construct nodes on the left, Metric nodes on the right, with edge labels indicating strength of alignment8788**Node Styling:**89- `cli` class: Constructs and intended properties being claimed90- `output` class: Measured metrics (what is actually computed)91- `gap` class: Weak or missing alignments, proxy collapses92- `handler` class: Proxy relationships and intermediate mappings9394**Connection Types:**95- Solid arrows for strong, well-evidenced alignment96- Dashed arrows for proxy or contested alignment97- Edge labels naming the type of relationship or its weakness9899### Step 5: Write Output100101Write the output to: `temp/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md`102103---104105## Output Template106107```markdown108# Measurement Validity Analysis: {Experiment Name}109110**Lens:** Measurement Validity (Psychometric)111**Question:** Do measurements justify the interpretation?112**Date:** {YYYY-MM-DD}113**Scope:** {What was analyzed}114115## Metric Inventory116117| Metric | Construct Claimed | Computation | Reliability | Sensitivity |118|--------|-------------------|-------------|-------------|-------------|119| {metric name} | {what it claims to measure} | {aggregation/formula} | {stable / unstable / unknown} | {high / low / saturated} |120121## Validity Arguments122123### {Metric Name}124125**Construct claimed:** {The property this metric is presented as measuring}126127**Evidence for alignment:**128- {Supporting argument or citation}129130**Evidence against alignment / known failure modes:**131- {Failure mode 1: e.g., gameable by surface pattern matching}132- {Failure mode 2: e.g., proxy collapses when distribution shifts}133134**Reliability assessment:** {Stable under reruns? Sensitive to seed?}135136**Sensitivity assessment:** {Can it distinguish meaningful differences in the relevant range?}137138**Verdict:** {Strong / Partial / Weak / Unsupported}139140---141142## Proxy Collapse Risks143144| Metric | Proxy For | Collapse Condition | Consequence |145|--------|-----------|--------------------|-------------|146| {metric} | {true construct} | {when proxy diverges from construct} | {what is falsely concluded} |147148## Gaming Vulnerabilities149150| Metric | Gaming Strategy | Detection Method |151|--------|----------------|-----------------|152| {metric} | {how to maximize score without improving construct} | {how to detect gaming} |153154## Optional: Metric-Construct Mapping Diagram155156{Include only if it clarifies alignment; omit if argument tables are sufficient}157158```mermaid159%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%160flowchart LR161 %% CLASS DEFINITIONS %%162 classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;163 classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;164 classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;165 classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;166 classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;167 classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;168 classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;169 classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;170 classDef integration fill:#c62828,stroke:#ef9a9a,stroke-width:2px,color:#fff;171172 subgraph Constructs ["Intended Constructs"]173 C1["Construct A<br/>━━━━━━━━━━<br/>The property claimed"]174 C2["Construct B<br/>━━━━━━━━━━<br/>Another property"]175 end176177 subgraph Metrics ["Measured Metrics"]178 M1["Metric X<br/>━━━━━━━━━━<br/>Computation method"]179 M2["Metric Y<br/>━━━━━━━━━━<br/>Computation method"]180 end181182 subgraph Gaps ["Weak / Missing Alignments"]183 G1["Proxy Collapse Risk<br/>━━━━━━━━━━<br/>Condition for divergence"]184 end185186 %% ALIGNMENTS %%187 C1 -->|"strong alignment"| M1188 C2 -->|"proxy (weak)"| M2189 M2 -.->|"diverges under"| G1190191 %% CLASS ASSIGNMENTS %%192 class C1,C2 cli;193 class M1,M2 output;194 class G1 gap;195```196197**Color Legend:**198| Color | Category | Description |199|-------|----------|-------------|200| Dark Blue | Construct | Intended properties being claimed |201| Dark Teal | Metric | What is actually computed and reported |202| Yellow | Gap | Weak alignment, proxy collapse, or missing evidence |203| Orange | Proxy | Intermediate proxy relationships |204205## Summary Verdict206207| Metric | Verdict | Primary Concern |208|--------|---------|----------------|209| {metric} | {Strong / Partial / Weak / Unsupported} | {One-line summary of the key validity concern} |210```211212---213214## Pre-Diagram Checklist215216Before creating any optional diagram, verify:217218- [ ] LOADED `/mermaid` skill using the Skill tool219- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)220- [ ] Diagram will include a color legend table221222---223224## Related Skills225226- `/make-experiment-diag` - Parent skill for lens selection227- `/mermaid` - MUST BE LOADED before creating any optional diagram228- `/exp-lens-estimand-clarity` - For auditing the upstream claim the metric is meant to support229- `/exp-lens-benchmark-representativeness` - For auditing whether the evaluation set generalizes