Problem
The line-interactive spec requires true interactivity (hover tooltips, zoom, pan, range selection). However, implementations were generated and approved for matplotlib, seaborn, and plotnine - libraries that can only output static PNG files.
These implementations "faked" interactivity by:
- Using
mplcursors (only works in live display, not in saved PNG)
- Adding static annotations to "simulate" hover states
- Adding text hints like "use scroll to zoom" that don't actually work in PNG output
This passed AI quality review with scores of 85-88/100.
Root Cause
- impl-generate prompts don't check if a spec's requirements are feasible for the target library
- quality-evaluator prompts don't verify that claimed features actually work in the saved output format
- No automatic
not-feasible detection for capability mismatches
Affected Specs
Any spec requiring features that static libraries can't provide:
line-interactive - hover, zoom, pan (matplotlib/seaborn/plotnine deleted)
- Potentially others with: animations, hover tooltips, click interactions, etc.
Library Capability Matrix
| Feature |
matplotlib |
seaborn |
plotnine |
plotly |
bokeh |
altair |
highcharts |
letsplot |
pygal |
| Static PNG |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Interactive HTML |
❌ |
❌ |
❌ |
✅ |
✅ |
✅ |
✅ |
✅ |
⚠️ |
| Hover tooltips |
❌ |
❌ |
❌ |
✅ |
✅ |
✅ |
✅ |
✅ |
⚠️ |
| Zoom/Pan |
❌ |
❌ |
❌ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
| Animations |
❌ |
❌ |
❌ |
✅ |
❌ |
❌ |
✅ |
❌ |
❌ |
Proposed Fixes
1. Update prompts/library/*.md with capability declarations
Add to each library prompt:
## Library Capabilities
- Output formats: PNG only (no HTML)
- Interactivity: None (static output)
- NOT FEASIBLE for specs requiring: hover, zoom, pan, animations, click handlers
2. Update prompts/plot-generator.md with feasibility check
Add pre-generation step:
## Before Generating
1. Check if spec requirements match library capabilities
2. If spec requires interactivity but library only outputs static images → STOP
3. Return "NOT_FEASIBLE: {library} cannot provide {required_feature}"
3. Update prompts/quality-evaluator.md with output verification
Add to quality criteria:
## Auto-Reject: Fake Features
- AR-08: FAKE_INTERACTIVITY - Code claims interactivity but output is static
- Check: If spec requires hover/zoom → verify output is HTML, not just PNG
- Check: If code uses interactive libraries (mplcursors) but saves as PNG → REJECT
4. Add spec tagging for required capabilities
In specification.yaml:
requires:
- interactive_output # Needs HTML, not just PNG
- hover_tooltips
- zoom_pan
Then impl-generate can auto-skip incompatible libraries.
Immediate Actions Taken
- Deleted
line-interactive implementations for matplotlib, seaborn, plotnine
- Deleted corresponding GCS images and metadata
🤖 Generated with Claude Code
Problem
The
line-interactivespec requires true interactivity (hover tooltips, zoom, pan, range selection). However, implementations were generated and approved for matplotlib, seaborn, and plotnine - libraries that can only output static PNG files.These implementations "faked" interactivity by:
mplcursors(only works in live display, not in saved PNG)This passed AI quality review with scores of 85-88/100.
Root Cause
not-feasibledetection for capability mismatchesAffected Specs
Any spec requiring features that static libraries can't provide:
line-interactive- hover, zoom, pan (matplotlib/seaborn/plotnine deleted)Library Capability Matrix
Proposed Fixes
1. Update
prompts/library/*.mdwith capability declarationsAdd to each library prompt:
2. Update
prompts/plot-generator.mdwith feasibility checkAdd pre-generation step:
3. Update
prompts/quality-evaluator.mdwith output verificationAdd to quality criteria:
4. Add spec tagging for required capabilities
In
specification.yaml:Then impl-generate can auto-skip incompatible libraries.
Immediate Actions Taken
line-interactiveimplementations for matplotlib, seaborn, plotnine🤖 Generated with Claude Code