Skip to main content

Agent workflow

Simthesizer turns a serving-feature request into simulator changes through a harnessed coding agent. The harness is a set of skills in .agents/skills/, which .claude/skills also points to. Claude Code loads them through .claude/skills, and each skill carries agents/openai.yaml metadata for Codex.

Stages​

StageOwnsProduces
task-designBehavior and requirement IDs. Asks the user about open, performance-relevant choices such as mechanism scope, state lifetime, metric boundaries, and permitted approximations.A behavioral specification
sim-mappingThe link from each requirement to native state owners, dependency mechanisms, cost paths, and observable checks, with file and symbol evidence.An implementation map
sim-devThe implementation, through registered components and graph nodes, keeping every requirement linked to code or an explicit gap.A candidate
sim-validationJudging the candidate against independent evidence, diagnosing gaps, and deciding to revise, investigate, finish, or report a blocker.An assessment

The same task agent owns the whole cycle. Each stage reuses existing task artifacts and continues authorized work without another approval. Small changes can keep their spec, map, and assessment in one concise task record.

Validation modes​

  • Trace-guided. Compatible observations of the target system exist, such as request timings or engine state traces. The agent compares the simulator against them and diagnoses temporal differences.
  • Reference-guided. No comparable measurements exist. The agent derives criteria from technical sources and builds small diagnostic workloads or fixtures that isolate the mechanism.

A passing test supports only the behavior it actually distinguishes. Synthetic self-comparisons establish tool behavior, not model adequacy.

Tools​

tools/validate.py records validation decisions and checks evidence identity and pending work. Its trace tools compare declared engine observations and retain gaps, temporal differences, and source provenance. Request-level analysis stays in scripts/results.py.

Source of truth: architectures/agent-workflow.md.