{
  "steps": [
    {
      "id": "ask",
      "actor": "user",
      "title": { "en": "Say what may change, the goal and the limits", "ja": "変えてよい所・目的・守ることを伝える" },
      "detail": {
        "en": "In plain words, from the earlier project: which parts may move and where, which counts may change, the measure to judge by, and what must hold (aisles, sight lines, areas to keep clear, a throughput floor).",
        "ja": "前回のプロジェクトのまま、ふつうの言葉で：どの部品をどこまで動かしてよいか、どの数を変えてよいか、何で判断するか、守ること（通路・見通し・空けておく場所・処理量の下限）。"
      },
      "tools": [],
      "output": { "en": "One prompt", "ja": "1つの依頼文" }
    },
    {
      "id": "spec",
      "actor": "agent",
      "title": { "en": "Turn it into a search", "ja": "探索の指定にする" },
      "detail": {
        "en": "The agent reads the model and the scenario, adds parameters where a count is fixed, and writes the search: variables, objective, constraints, runs and seed.",
        "ja": "エージェントがモデルとシナリオを読み、数が固定ならパラメータにして、探索を書きます：変えてよい所・目的・制約・回数・乱数の種。"
      },
      "tools": ["get_space", "list_process_scenarios", "put_process_scenario", "search_layouts"],
      "output": { "en": "A search request", "ja": "探索の依頼" }
    },
    {
      "id": "rule-out",
      "actor": "laydyne",
      "title": { "en": "Build the candidates and rule out the bad ones", "ja": "候補を作り、だめな候補を先に除く" },
      "detail": {
        "en": "Every candidate is built and checked before it runs: overlaps, narrow passages, keep-out areas, sight lines. Rejected ones are counted with the reason.",
        "ja": "候補ごとに配置を作り、計算の前に検査します：重なり・狭い通路・立入禁止・見通し。除いた候補は理由つきで数えます。"
      },
      "tools": ["search_layouts"],
      "output": { "en": "Candidates that may run", "ja": "計算してよい候補" }
    },
    {
      "id": "run",
      "actor": "laydyne",
      "title": { "en": "Run each with the same seeds", "ja": "同じ乱数で1つずつ計算する" },
      "detail": {
        "en": "In the browser tab's own worker, with a time limit and a cancel: every candidate and the current layout run the saved scenario with the same seeds and number of runs.",
        "ja": "ブラウザのタブの専用Workerで、時間の上限と中止つき。全候補と今の配置を、保存したシナリオ・同じ乱数・同じ回数で計算します。"
      },
      "tools": ["get_layout_search"],
      "output": { "en": "Paired results", "ja": "対になった結果" }
    },
    {
      "id": "rank",
      "actor": "laydyne",
      "title": { "en": "Rank, with intervals, and save the best", "ja": "区間つきで順位を付け、上位を保存する" },
      "detail": {
        "en": "Best first, each with the 95 % interval and the paired difference from the current layout and from the best. The best few are saved as frozen layout options.",
        "ja": "よい順に、95%区間と、今の配置・最良案との対ごとの差を付けます。上位は固定の配置案として保存します。"
      },
      "tools": ["search_layouts", "get_layout_search"],
      "output": { "en": "A ranking and saved options", "ja": "順位と保存した案" }
    },
    {
      "id": "compare",
      "actor": "agent",
      "title": { "en": "Compare with the hand-made options", "ja": "人が作った案と比べる" },
      "detail": {
        "en": "The best saved option against the options people made earlier, same seeds and runs, with an HTML and JSON report.",
        "ja": "保存した最良案を、以前に人が作った案と、同じ乱数・回数で比べ、HTMLとJSONの報告を残します。"
      },
      "tools": ["compare_process_options", "get_process_comparison"],
      "output": { "en": "A saved comparison", "ja": "保存した比較" }
    },
    {
      "id": "show",
      "actor": "agent",
      "title": { "en": "Show the best", "ja": "最良案を見せる" },
      "detail": {
        "en": "The best layout in 2D, with what moved, and in 3D. The person's layout is put back afterwards.",
        "ja": "最良案の2D（動いた所の印つき）と3D。見せたあと、元の配置に戻します。"
      },
      "tools": ["save_design_option", "edit_space", "get_view_image", "restore_design_option"],
      "output": { "en": "Plans and a table", "ja": "図と表" }
    },
    {
      "id": "decide",
      "actor": "user",
      "title": { "en": "Decide", "ja": "決める" },
      "detail": {
        "en": "The person reads the ranking and the differences beyond the noise, and checks the result in the Studio, where the search card shows the same ranking.",
        "ja": "順位と、ばらつきを超える差を読み、Studioで確かめます。Studioの探索カードにも同じ順位が出ます。"
      },
      "tools": [],
      "output": { "en": "A choice with evidence", "ja": "根拠のある選択" }
    }
  ]
}
