lab: wfbench — Workflow Editor Agent Benchmark harness (stakwork 58313 twin) - #1650
Merged
Merged
Conversation
…3's twin) wfbench-run: graph roster (EvalSet / EvalRequirement / EvalTrigger with 58313's ids, HAS_BASELINE_TRIGGER on the first trigger) in parallel with the meta/* author agent -> resolve the shipped version -> input-key gate -> rerun via meta/run-workflow -> per-criterion judge subflow -> eval/aggregate-scores -> record EvalTriggerOutput + CriterionResult per 58312 -> one Hive callback body (POSTed and returned). Ten pure steps, two workflows, seeded unstamped; wfbench/* is never an agent tool. Offline smoke (src/lab/wfbench/smoke.ts): seeds, discovers, static- validates both workflows through the authoring capability, drives every pure step, and checks every graph payload's attributes and edges against JARVIS_ONTOLOGY.
…t copies A workflow's output is its last step's output, so returning fields from several steps needs a passthrough step — harvey, gaia and wfbench each carried an identical one, and the wfbench author reached for gaia/pack-result because it was the first it found. `pack` is that primitive in core (config = output), discoverable everywhere. Every harvey/gaia/wfbench workflow, seed, smoke and doc is re-pointed; the copies are deleted.
Collaborator
Author
|
Added on this branch: core Live run of Verification after the change: vein |
Evanfeenstra
added a commit
that referenced
this pull request
Sep 4, 2026
…3 twin) (#1650) (#1651) * lab: wfbench — Workflow Editor Agent Benchmark harness (stakwork 58313's twin) wfbench-run: graph roster (EvalSet / EvalRequirement / EvalTrigger with 58313's ids, HAS_BASELINE_TRIGGER on the first trigger) in parallel with the meta/* author agent -> resolve the shipped version -> input-key gate -> rerun via meta/run-workflow -> per-criterion judge subflow -> eval/aggregate-scores -> record EvalTriggerOutput + CriterionResult per 58312 -> one Hive callback body (POSTed and returned). Ten pure steps, two workflows, seeded unstamped; wfbench/* is never an agent tool. Offline smoke (src/lab/wfbench/smoke.ts): seeds, discovers, static- validates both workflows through the authoring capability, drives every pure step, and checks every graph payload's attributes and edges against JARVIS_ONTOLOGY. * vein: core `pack` step; lab: drop the three per-experiment pack-result copies A workflow's output is its last step's output, so returning fields from several steps needs a passthrough step — harvey, gaia and wfbench each carried an identical one, and the wfbench author reached for gaia/pack-result because it was the first it found. `pack` is that primitive in core (config = output), discoverable everywhere. Every harvey/gaia/wfbench workflow, seed, smoke and doc is re-pointed; the copies are deleted. (cherry picked from commit dbc98d5)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #1648 (needs
meta/validate-workflow+ theeval/*scoring steps). Design + step map:mcp/src/lab/plans/wfbench-harness.md.What
wfbench-runis the vein twin of stakwork 58313 (+ nested 54419 / 55741 / 55740 / 58114 / 58414 / 57425 / 58312):params.namespace): EvalSet{ id: task_slug }→ EvalRequirement×N{ id: <slug>-<criterion_id> }(HAS_REQUIREMENT, ordered) → EvalTrigger{ id: <slug>-<runId>, workflow_id, workflow_version_id, workflow_input, project_id }→HAS_BASELINE_TRIGGERwhen the EvalSet had no trigger before, elseHAS_TRIGGER. Runs in parallel with the author.agent+agentTools: ["meta/*"](editor tool only) buildswfbench-<slug>; the version it shipped is resolved asvpin || vactivewith apublished-vs-vbeforegate (the gaia-evolve-gen lesson).wfbench/check-input-keys(theinput.<key>references in the produced YAML vs the launch payload; mismatch or empty body = harness error, no launch) →meta/run-workflow(own runId = 58313's project_id) →wfbench/classify-run(a runtime-failed rerun is still judged).wfbench/build-materialsinlines workflow YAML + custom step sources + launch payload + run output + expected output into one block →wfbench-judge-criterionper criterion (agent schema mode, nothing to read; crash ={ error }= honest FAIL) →eval/aggregate-scores.wfbench/build-eval-output→graph/create-batch-triplet:EvalTrigger -HAS_OUTPUT-> EvalTriggerOutput { id: <slug>-<runId>, result, verdict, score, max_score, n_passed, n_total, judge_model }, and per criterionEvalTriggerOutput/EvalRequirement -HAS_CRITERION_RESULT-> CriterionResult { id: <slug>-<runId>-<criterion_id>, … }.wfbench/webhook-body= 58313's 4-wayresolve_webhook_payloadwith the exact Hive keys (harness_errorbodies carry no score fields); POSTed towebhook_urland returned as the run's output (58313's set_output diverged on error paths).Graph attrs are limited to what the jarvis ontology declares (vein rejects the rest):
EvalSet.project_idand thenameon EvalTrigger/EvalTriggerOutput are omitted; 58312'sHAS_CAUSE → Workflow_versionis not written (no such relationship). Everything else matches and the smoke asserts it.Not in v1: batch runner, stakwork-fetch/port-task, edit-existing. No stakwork credentials needed.
Verification
npx tsc --noEmitclean.npx tsx src/lab/wfbench/smoke.ts— offline: seeds, discovers 22 steps, static-validates both workflows (0 errors, 0 warnings) through the authoring capability, drives all 10 pure steps, checks every node payload's attributes and every edge againstJARVIS_ONTOLOGY. All pass.ANTHROPIC_API_KEY).