{
  "version": 1,
  "language": "en",
  "title": "Keep evaluation fixed during local search",
  "description": "A local loop proposes candidates, runs them and checks their results with a fixed objective. A separate review can change goals, metrics or controls and start a new comparison. This review is the author's proposal.",
  "caption": "Local search keeps evaluation fixed. A separate review examines questions about goals, metrics or controls. A new objective starts a new comparison. The outer loop is the author's analytical proposal, not a claimed autoresearch feature. Author-created explanatory diagram. Playback time is for this example. Animation time is not measured runtime.",
  "alt": "Research flow: proposals, experiments and tests use a fixed objective. A separate review can change the setup and start a new comparison.",
  "sources": [
    {
      "path": "content/blog/2026-04-06_The-Age-of-Auto-Research-and-Other-Certainties/post.md",
      "description": "Article mechanism and retained citations"
    },
    "https://github.com/karpathy/autoresearch"
  ],
  "limitations": [
    "This playback is an example. Playback duration is not measured runtime.",
    "The setup-review loop is the author’s synthesis. It is not an implemented autoresearch feature.",
    "Supported and rejected results are example outcomes. This is not a captured experiment."
  ],
  "targets": {
    "goal": {
      "id": "mechanism-goal",
      "kind": "node",
      "label": "Declared goal"
    },
    "review": {
      "id": "mechanism-review",
      "kind": "node",
      "label": "Review the setup"
    },
    "propose": {
      "id": "mechanism-propose",
      "kind": "node",
      "label": "Propose"
    },
    "run": {
      "id": "mechanism-run",
      "kind": "node",
      "label": "Run + record"
    },
    "check": {
      "id": "mechanism-check",
      "kind": "node",
      "label": "Check evidence"
    },
    "keep": {
      "id": "mechanism-keep",
      "kind": "node",
      "label": "Keep"
    },
    "reject": {
      "id": "mechanism-reject",
      "kind": "node",
      "label": "Reject"
    },
    "goalPropose": {
      "id": "mechanism-goalPropose",
      "kind": "edge",
      "label": "propose candidate"
    },
    "proposeRun": {
      "id": "mechanism-proposeRun",
      "kind": "edge",
      "label": "run candidate"
    },
    "runCheck": {
      "id": "mechanism-runCheck",
      "kind": "edge",
      "label": "check result"
    },
    "supported": {
      "id": "mechanism-supported",
      "kind": "edge",
      "label": "keep result"
    },
    "unsupported": {
      "id": "mechanism-unsupported",
      "kind": "edge",
      "label": "investigate result"
    },
    "keepNext": {
      "id": "mechanism-keepNext",
      "kind": "edge",
      "label": "propose next"
    },
    "rejectNext": {
      "id": "mechanism-rejectNext",
      "kind": "edge",
      "label": "propose next"
    },
    "challenge": {
      "id": "mechanism-challenge",
      "kind": "edge",
      "label": "review setup"
    },
    "newBoundary": {
      "id": "mechanism-newBoundary",
      "kind": "edge",
      "label": "start new comparison"
    }
  },
  "stateLabels": {
    "stage": "Stage",
    "artifact": "Artifact"
  },
  "scenarios": [
    {
      "id": "supported",
      "title": "Supported improvement",
      "description": "In this example, the local comparison supports the improvement.",
      "initial": {
        "stage": "Ready",
        "artifact": "Inputs available"
      },
      "unselected": [
        "review",
        "reject",
        "unsupported",
        "rejectNext",
        "challenge",
        "newBoundary"
      ],
      "steps": [
        {
          "title": "Declare a comparable objective",
          "description": "The comparison has a declared goal and fixed evaluation.",
          "duration": 3000,
          "active": [
            "goal"
          ],
          "paths": [],
          "state": {
            "stage": "Declare a comparable objective",
            "artifact": "Goal and evaluation boundary fixed"
          }
        },
        {
          "title": "Propose a candidate",
          "description": "The local loop proposes a candidate.",
          "duration": 3000,
          "active": [
            "propose"
          ],
          "paths": [
            "goalPropose"
          ],
          "state": {
            "stage": "Propose a candidate",
            "artifact": "Candidate implementation selected"
          }
        },
        {
          "title": "Execute and preserve evidence",
          "description": "The loop executes the candidate and keeps the evidence.",
          "duration": 3000,
          "active": [
            "run"
          ],
          "paths": [
            "proposeRun"
          ],
          "state": {
            "stage": "Execute and preserve evidence",
            "artifact": "Artifact and protocol recorded"
          }
        },
        {
          "title": "Check result and controls",
          "description": "The loop checks the result and controls.",
          "duration": 3000,
          "active": [
            "check"
          ],
          "paths": [
            "runCheck"
          ],
          "state": {
            "stage": "Check result and controls",
            "artifact": "Evidence checked within this boundary"
          }
        },
        {
          "title": "Keep and reproduce",
          "description": "In this example, the loop keeps and reproduces the supported result.",
          "duration": 3000,
          "active": [
            "keep"
          ],
          "paths": [
            "supported"
          ],
          "state": {
            "stage": "Keep and reproduce",
            "artifact": "Supported result kept"
          }
        },
        {
          "title": "Try another candidate",
          "description": "The loop tries another candidate with the same goal.",
          "duration": 3000,
          "active": [
            "propose"
          ],
          "paths": [
            "keepNext"
          ],
          "state": {
            "stage": "Try another candidate",
            "artifact": "Same goal, next candidate"
          }
        }
      ]
    },
    {
      "id": "unsupported",
      "title": "Unsupported result",
      "description": "This example does not keep the result as an improvement.",
      "initial": {
        "stage": "Ready",
        "artifact": "Inputs available"
      },
      "unselected": [
        "review",
        "keep",
        "supported",
        "keepNext",
        "challenge",
        "newBoundary"
      ],
      "steps": [
        {
          "title": "Declare a comparable objective",
          "description": "The comparison has a declared goal and fixed evaluation.",
          "duration": 3000,
          "active": [
            "goal"
          ],
          "paths": [],
          "state": {
            "stage": "Declare a comparable objective",
            "artifact": "Goal and evaluation boundary fixed"
          }
        },
        {
          "title": "Propose a candidate",
          "description": "The local loop proposes a candidate.",
          "duration": 3000,
          "active": [
            "propose"
          ],
          "paths": [
            "goalPropose"
          ],
          "state": {
            "stage": "Propose a candidate",
            "artifact": "Candidate implementation selected"
          }
        },
        {
          "title": "Execute and preserve evidence",
          "description": "The loop executes the candidate and keeps the evidence.",
          "duration": 3000,
          "active": [
            "run"
          ],
          "paths": [
            "proposeRun"
          ],
          "state": {
            "stage": "Execute and preserve evidence",
            "artifact": "Artifact and protocol recorded"
          }
        },
        {
          "title": "Check result and controls",
          "description": "The loop checks the result and controls.",
          "duration": 3000,
          "active": [
            "check"
          ],
          "paths": [
            "runCheck"
          ],
          "state": {
            "stage": "Check result and controls",
            "artifact": "Evidence checked within this boundary"
          }
        },
        {
          "title": "Reject or investigate",
          "description": "The loop rejects or investigates the result. It does not keep the result as an improvement.",
          "duration": 3000,
          "active": [
            "reject"
          ],
          "paths": [
            "unsupported"
          ],
          "state": {
            "stage": "Reject or investigate",
            "artifact": "Result not kept as an improvement"
          }
        },
        {
          "title": "Change the next proposal",
          "description": "The loop changes the next proposal with the same goal.",
          "duration": 3000,
          "active": [
            "propose"
          ],
          "paths": [
            "rejectNext"
          ],
          "state": {
            "stage": "Change the next proposal",
            "artifact": "Same goal, another candidate"
          }
        }
      ]
    },
    {
      "id": "review",
      "title": "Evidence challenges the setup",
      "description": "Evidence challenges the setup in this example.",
      "initial": {
        "stage": "Ready",
        "artifact": "Inputs available"
      },
      "unselected": [
        "keep",
        "reject",
        "supported",
        "unsupported",
        "keepNext",
        "rejectNext"
      ],
      "steps": [
        {
          "title": "Declare a comparable objective",
          "description": "The comparison has a declared goal and fixed evaluation.",
          "duration": 3000,
          "active": [
            "goal"
          ],
          "paths": [],
          "state": {
            "stage": "Declare a comparable objective",
            "artifact": "Goal and evaluation boundary fixed"
          }
        },
        {
          "title": "Propose a candidate",
          "description": "The local loop proposes a candidate.",
          "duration": 3000,
          "active": [
            "propose"
          ],
          "paths": [
            "goalPropose"
          ],
          "state": {
            "stage": "Propose a candidate",
            "artifact": "Candidate implementation selected"
          }
        },
        {
          "title": "Execute and preserve evidence",
          "description": "The loop executes the candidate and keeps the evidence.",
          "duration": 3000,
          "active": [
            "run"
          ],
          "paths": [
            "proposeRun"
          ],
          "state": {
            "stage": "Execute and preserve evidence",
            "artifact": "Artifact and protocol recorded"
          }
        },
        {
          "title": "Check result and controls",
          "description": "The loop checks the result and controls.",
          "duration": 3000,
          "active": [
            "check"
          ],
          "paths": [
            "runCheck"
          ],
          "state": {
            "stage": "Check result and controls",
            "artifact": "Evidence checked within this boundary"
          }
        },
        {
          "title": "Review the objective or controls",
          "description": "This step examines the objective or controls.",
          "duration": 3000,
          "active": [
            "review"
          ],
          "paths": [
            "challenge"
          ],
          "state": {
            "stage": "Review the objective or controls",
            "artifact": "Comparison boundary under review"
          }
        },
        {
          "title": "Start a separate comparison",
          "description": "This step starts a new comparison.",
          "duration": 3000,
          "active": [
            "goal"
          ],
          "paths": [
            "newBoundary"
          ],
          "state": {
            "stage": "Start a separate comparison",
            "artifact": "Results need a new comparison after the boundary changes."
          }
        }
      ]
    }
  ]
}
