Try XGEN free for 15 days — nothing to install, runs in your browserStart free trial
PlateerAI Labs
Insight
Series

The Harness Diary

How we designed the harness — the execution layer owning validation, retry, and termination outside the generative model, part by part.

10 articles
  1. 1
    Tech Note

    Why we split the validation loop into execution states (Part 1)

    Designing generation, validation, tool execution, and retry as explicit states and transitions instead of hiding them inside one loop.

  2. 2
    Tech Note

    Why we separated the engine core from the product integration layer (Part 2)

    How the generic execution order and XGEN's data, permission, and canvas translation were divided across ServiceProvider, a registry, and a product bridge.

  3. 3
    Tech Note

    Exporting a fixed execution contract as a single MCP tool (Part 3)

    The harness has a fixed control skeleton, unlike a canvas graph. How we compiled it into one tool contract that can be installed and called from outside.

  4. 4
    Tech Note

    Why generation and judgement became separate execution stages (Part 4)

    Rebuilding Company L's QA on the harness: separating generation logic from business judgement, and feeding per-criterion feedback back into the next run.

  5. 5
    Tech Note

    Why retry and termination conditions are separate (Part 5)

    Separating the meanings of transport recovery, progress through a tool, and quality rewriting, and making a terminal tool end exactly the current round.

  6. 6
    Tech Note

    Searching configuration candidates with judgement scores (Part 6)

    Changing one item at a time behind promotion thresholds and execution caps — including an honest look at the limits of the current validation-set separation.

  7. 7
    Tech Note

    Controlling execution conditions before comparing models (Part 7)

    Comparing Qwen3.6-27B and Claude Sonnet 4.6 meant first separating iteration count, output length, the judge, and tool conditions.

  8. 8
    Tech Note

    Scoping and prioritizing memory between runs (Part 8)

    Separating one run's working notes from the lessons worth keeping, and handling conflicts across session, workflow, user, and platform scopes.

  9. 9
    Tech Note

    Designing tool exposure and output delivery as execution context (Part 9)

    Exposing connected tools search-first, and separating what the model is told about an output destination from who owns actually delivering to it.

  10. 10
    Tech Note

    Keeping lessons fresh when you feed them into the next run (Part 10)

    Making validation feedback, answer candidates, judgement scores, and tool discovery carry into the next action without mixing state from different rounds.