{
  "version": "astra-technique-paper-audit-v22-1",
  "status": "experimental",
  "date": "2026-09-08",
  "purpose": "Separate flow topography from empirical pigment affinity before changing a full artwork.",
  "entry": {
    "module": "/sketch/film/jobs.js",
    "factory": "createFilmJobs",
    "browserAPI": "astraFilm",
    "sceneVersion": "astra-sketch-1",
    "checkpointVersion": "thin-film-v21",
    "checkpointNote": "Read input.options to identify the numerical revision; the format label alone is insufficient."
  },
  "recommendedExperimentOptions": {
    "passOrdering": "balanced-v22",
    "reactionStep": 0.02,
    "mixing": "wet-mass",
    "pigmentGranulation": 0.7,
    "paperAffinity": 4,
    "step": 0.001,
    "resolution": 512
  },
  "constraints": {
    "uniformTrait": "Every colored brush must declare granulation=.7 for this preset; differing values are rejected. Multiple colors may share this proxy; this is not pigment-species mixing.",
    "finitePaint": "reservoir-v2 reload/continue; constant-v1 and constantRate are removed.",
    "allowedMarks": [
      "brush",
      "wait"
    ],
    "hold": "Stops absorption, evaporation and fixation over the whole paper during that layer; transport and brush exchange continue.",
    "affinity": "paperAffinity > 0 requires wet-mass and an explicit uniform pigmentGranulation. Recommended v22 runs also explicitly set balanced-v22 and reactionStep.",
    "noImageFilters": true,
    "noReferenceRasterPainting": true
  },
  "assumptions": {
    "affinity": "Empirical flux biased by a=exp((.5-paperRelief)*roughness*granulation*paperAffinity). Paired flux transports mass toward equilibrium m proportional to a.",
    "height": "reliefHeight scales the paper term in flow. It is not measured physical paper thickness or a complete roughness setting.",
    "color": "Optical RGB proxy mass, not spectral pigment concentration."
  },
  "inputs": [
    {
      "id": "low-plain",
      "group": "paper-2x2",
      "input": "/sketch/experiments/paper-audit-v22/low-plain.json",
      "inputSHA256": "f02bfbded61666876291764946fc554d8000b92e9b50673a1ba603878708821a",
      "png": "/sketch/experiments/paper-audit-v22/low-plain.png",
      "replay": "/sketch/experiments/paper-audit-v22/low-plain-replay.json"
    },
    {
      "id": "low-affinity",
      "group": "paper-2x2",
      "input": "/sketch/experiments/paper-audit-v22/low-affinity.json",
      "inputSHA256": "704649541debdb4481a343db3e0364d51675b2cd0240f7c0d65de8fc0c758d01",
      "png": "/sketch/experiments/paper-audit-v22/low-affinity.png",
      "replay": "/sketch/experiments/paper-audit-v22/low-affinity-replay.json"
    },
    {
      "id": "high-plain",
      "group": "paper-2x2",
      "input": "/sketch/experiments/paper-audit-v22/high-plain.json",
      "inputSHA256": "640e14f3aece8799f3a69f898b198b63e2083e8520d31b5e8561dcf0a8c40514",
      "png": "/sketch/experiments/paper-audit-v22/high-plain.png",
      "replay": "/sketch/experiments/paper-audit-v22/high-plain-replay.json"
    },
    {
      "id": "high-affinity",
      "group": "paper-2x2",
      "input": "/sketch/experiments/paper-audit-v22/high-affinity.json",
      "inputSHA256": "3b5d73fafb46a2dc2c94269554b799ae5c3869266d27b74b1b2832f95de7a85c",
      "png": "/sketch/experiments/paper-audit-v22/high-affinity.png",
      "replay": "/sketch/experiments/paper-audit-v22/high-affinity-replay.json"
    },
    {
      "id": "slow-plain",
      "group": "slow-contact",
      "input": "/sketch/experiments/paper-audit-v22/slow-plain.json",
      "inputSHA256": "0872aa76a5987c743a88374e4d6ac47caab6a661e367af42522a6f4f67c7878d",
      "png": "/sketch/experiments/paper-audit-v22/slow-plain.png",
      "replay": "/sketch/experiments/paper-audit-v22/slow-plain-replay.json"
    },
    {
      "id": "slow-affinity",
      "group": "slow-contact",
      "input": "/sketch/experiments/paper-audit-v22/slow-affinity.json",
      "inputSHA256": "10d4d92ed2106704159fb5252f35419efa5e6d298f2a94e8ccb98ecedbcb5ff7",
      "png": "/sketch/experiments/paper-audit-v22/slow-affinity.png",
      "replay": "/sketch/experiments/paper-audit-v22/slow-affinity-replay.json"
    }
  ],
  "workflow": [
    "Read capabilities and choose this experimental backend explicitly.",
    "Run a saved control input first. Observe actual frames after meaningful stages.",
    "Change one variable relative to its group. Keep material time and recording frequency separate.",
    "Wait for paused or complete before checkpoint. Export before closing the tab.",
    "Compare mass budgets, local grain, coarse variation and footprint separately.",
    "Inspect the actual image. Keep a failed candidate and its settings; do not adopt merely because grain increased."
  ],
  "evidence": {
    "results": "/sketch/experiments/paper-audit-v22/results.json",
    "review": "/sketch/experiments/paper-audit-v22/review.json",
    "testsPassed": 110,
    "cpuGpuMaxRelativeL1": 0.000006205102093525789,
    "checkpoint": {
      "allFieldsExact": true,
      "brushesEqual": true,
      "ticksEqual": true
    }
  },
  "conclusion": "紙目への親和性を、単一の共通顔料属性に限定した実験機能として残す。強度4を完成画の既定値にはしない。",
  "visualObservations": [
    "薄い4条件では、紙高さを10倍にしても見た目の差は小さい。",
    "10秒の筆では親和性なしが滑らかな帯、強度4が細かい斑点としてはっきり見える。",
    "親和性は色の偏りを作るが、この強さは静かな山や水面には強すぎる可能性がある。",
    "太い帯の形自体は変わらない。紙の改善だけで絵の構図や筆の進め方は直らない。"
  ],
  "limits": [
    "単一seedのみ。実物への校正なし。",
    "紙の物理尺度、解像度間の同一凹凸、時間収束が未検証。",
    "複数顔料の属性輸送と内部水の横拡散は未実装。",
    "論文の受け側高さ上限hmaxは未実装。有限筆の供給との整合を先に検証する。",
    "初見AIへの技能移転、全景のv20越えは未確認。"
  ],
  "roadmap": [
    {
      "id": "R0",
      "status": "completed-with-declared-limits",
      "title": "不具合と評価方法を修正",
      "gate": "再現テスト、CPU/GPU、保存と再開が通る。現行作品と未実装項目を保護。"
    },
    {
      "id": "R1",
      "status": "completed-limited-to-one-paper-seed",
      "title": "紙の高さと顔料の集まり方を切り分ける",
      "gate": "同一入力の4条件＋接触時間だけ変えた2条件。量の保存と実画像を比較。"
    },
    {
      "id": "R2",
      "status": "next",
      "title": "紙の尺度と解像度を揃える",
      "gate": "同じ凹凸を面積平均して格子比較。時間刻みも半分にして収束を確認。紙を細かくするほど粒が増える状態なら全景へ移さない。"
    },
    {
      "id": "R3",
      "status": "planned",
      "title": "顔料・吸水・にじみを別々に校正",
      "gate": "顔料の属性輸送、内部水の横拡散、sizingを一つずつ比較。色と水の収支を保持。"
    },
    {
      "id": "R4",
      "status": "planned",
      "title": "林と山裾の小さな習作へ移す",
      "gate": "複数の紙seedで輪郭・明暗・にじみを確認。同型の樹冠や長い塗り継ぎは筆順で直す。"
    },
    {
      "id": "R5",
      "status": "planned",
      "title": "初見のAIに技法を渡す",
      "gate": "会話履歴なし、能力表と実行JSONだけで対照→観察→修正。成功率と必要な助言を記録。"
    },
    {
      "id": "R6",
      "status": "planned",
      "title": "全景を描き、元絵と比較",
      "gate": "大きな形・明暗・紙目・焦点・余白でv20を超えた候補のみ採用。字幕と音楽付きで書き出す。"
    }
  ],
  "primarySources": [
    {
      "url": "https://grail.cs.washington.edu/projects/watercolor/paper_tiny.pdf",
      "use": "Paper/pigment interaction as a material concern. This experiment is an empirical approximation, not full reproduction."
    },
    {
      "url": "https://eliemichel.github.io/dripping-thin-films/documents/herson26dripping_thin_films.pdf",
      "use": "Thin-film paired transfer construction reviewed; receiving-cell hmax remains omitted."
    }
  ],
  "adoption": {
    "artwork": "reference-finale-v20",
    "newDefault": false,
    "noviceAgentTransferValidated": false,
    "deployment": "local static only"
  }
}