{
  "id": "brush-reservoir-v14",
  "status": "opt_in_feature_validated_artwork_not_replaced",
  "schema": "/sketch/schema.json",
  "docs": "docs/35-brush-reservoir.md",
  "command": {
    "supply": {
      "model": "reservoir-v1",
      "id": "round-blue",
      "action": "reload",
      "capacity": 4,
      "release": 3,
      "pickup": 0
    }
  },
  "requirements": [
    "material + brush + gesture + explicit water",
    "Do not combine load or lift with supply",
    "First use of each id must reload",
    "On continue keep width/color/opacity/water/granulation/capacity unchanged; those fields describe the original charge",
    "Never interpret continue as a fresh mix: absorbed paper color persists"
  ],
  "examples": {
    "depletion": "/sketch/experiments/brush-reservoir-v14/continue.json",
    "reload": "/sketch/experiments/brush-reservoir-v14/reload.json",
    "revisit": "/sketch/experiments/brush-reservoir-v14/return.json",
    "pickup": "/sketch/experiments/brush-reservoir-v14/pickup.json",
    "mountain": "/sketch/experiments/brush-reservoir-v14/mountain-refined.json"
  },
  "observe": {
    "api": "window.reservoirLab.observe() / inspect(id)",
    "states": "mode=saved uses the selected stored checkpoint; mode=replay uses current material state",
    "fields": [
      "material.reservoir.brushes",
      "material.reservoir.conservation"
    ]
  },
  "evidence": {
    "results": "/sketch/experiments/brush-reservoir-v14/results.json",
    "review": "/sketch/experiments/brush-reservoir-v14/review.json",
    "images": "/sketch/experiments/brush-reservoir-v14/images/"
  },
  "decisionLoop": [
    "Compare continue/reload and inspect remaining charge after each stroke",
    "Test a return stroke; distinguish actual additional supply from cosmetic texture",
    "Test zero-pigment pickup and a subsequent stroke on another location",
    "Check closed paper+brush+waste conservation and direct/replay identity",
    "Observe the painting; archive regressions and adjust one tool parameter or an explicitly named painting plan"
  ],
  "knownFailures": [
    "Mountain one-stroke application blurred the silhouette",
    "Thin brush placed inside the painted face did not restore the outer edge",
    "r3 restored some summit definition but still did not match reference edges"
  ],
  "limits": [
    "Empirical optical pigment units, not g/ml",
    "Well-mixed reservoir; no individual bristles or within-tuft spatial charge",
    "No fixed-pigment dissolution or brush evaporation",
    "Reload is instantaneous before contact, not a filmed dipping motion",
    "No novice-agent transfer evaluation or embedded autonomous vision evaluator"
  ],
  "adoption": {
    "feature": true,
    "existingArtwork": false
  }
}
