Training terminal agents has a persistent bottleneck: to teach models to operate real systems, you need large volumes of executable training tasks — and each task couples at least four artifacts: an instruction, an initialized environment, a reference solution, and an executable verifier. If these artifacts are generated from inconsistent assumptions, the resulting task is either unsolvable or incorrectly evaluated. A team from USTC, Shanghai AI Laboratory, and Fudan University posted their FACET framework to arXiv on August 19 (arXiv:2608.18580), with an answer that sounds almost counter-intuitively simple: build the world first, then write the task.
The information-loss problem in task synthesis
The paper identifies two pain points. First, information preservation: multi-stage synthesis pipelines gradually discard the goals, dependencies, state transitions, and procedural constraints encoded in original sources — the final task looks complete but no longer matches the source intent. Second, cross-artifact consistency: instruction, solution, and verifier are generated separately, none aware of what environment the others assume.
FACET (Fine-grained Agentic Construction of Executable Tasks) proceeds in three steps: acquire and organize 71K+ reusable agent skills into a scenario-skill repository; reconstruct scenarios by recovering goals, dependencies, intermediate states, tools, and I/O contracts; and finally the key move — realize and repair the execution environment first, making the container state the shared grounding for instruction, solution, and verifier. When a component fails validation, only that component is repaired, not the whole pipeline. The project page compresses this philosophy into one line: build the world first, then write the task.
What 1.2K trajectories buy
The numbers are solid. On Terminal-Bench 2.1, fine-tuning with just 1.2K successful trajectories collected from FACET tasks lifts Qwen3.5-4B from 17.60 to 24.72 (+7.12), Qwen3.5-9B from 27.34 to 35.58 (+8.24), and Qwen3.5-27B from 40.82 to 47.57 (+6.75). The most interesting reference point: the fine-tuned 27B reaches 47.57, within 1.49 points of the Qwen3.5-397B-A17B base (49.06) under the same evaluation setting — at roughly 1/15 the model size. Note these are the authors' own measurements; no independent replication exists yet.
The ablations deserve more attention than the headline. Generation order alone determines task validity: the forward order — environment, instruction, solution, then solution-aware verifier — reaches an 83% final yield, versus 65% for joint generation and 63% for reverse. First-pass validity gaps are wider still: 46.5% versus 37.5% and 24.2%. This comparison directly answers the question of whether it is data volume or ordering that matters — under the same models and compute, putting the environment first in the generation chain is itself a source of task validity. The construction funnel confirms the value of targeted repair: 7,852 scenario seeds yielded 7,504 successful environments (95.7%), but only 2,856 first-pass valid tasks (38.35%); component-level repair brings the final count to 6,078 (81.63%) — more than doubling the output.
The data-efficiency lens
Placed in the same-scaffold (Terminus-2) dataset comparison, FACET's trajectory efficiency is striking: other terminal-agent datasets typically require 5K to 32K trajectories (Nemotron-Terminal 5K, Terminal-Lego 32K), while FACET's 1.2K trajectories support 6,078 tasks with an average of 22.77 executable tests per task. The appendix also reports trajectory behavior statistics: 95.6% of trajectories open with an observation-only first turn, and 84.7% of turns include observation commands — a look-before-acting pattern that grows naturally out of environment grounding.
So what
FACET open-sources 6,020 public-release tasks (FACET-Terminal-Tasks-6k) and three fine-tuned checkpoints at 4B, 9B, and 27B, and has climbed the Hugging Face Daily Papers board (111 upvotes). For teams training agents, the transferable lesson here is not any single number but an engineering principle: the next step for synthetic data is not producing more, but producing what actually executes — land the environment first, and the task stands on solid ground. While everyone competes on models and compute, treating "is this task actually solvable" as a first-class engineering concern may be the most underrated lever on the data side.