locate method
This step, published: its artifact paths rewritten through path, its
address assigned, its root recorded.
How a host that knows the worktree turns the harness's own record — absolute paths, no address — into the one every surface reports. Lives beside the fields it copies so a new field cannot be forgotten in a parser three files away.
Implementation
ScenarioRunStep locate({
required String root,
required String address,
required String Function(String) path,
}) => ScenarioRunStep(
index: index,
position: position,
parent: parent,
branch: branch,
name: name,
auto: auto,
tags: tags,
kind: kind,
ms: ms,
image: switch (image) {
var image? => path(image),
null => null,
},
format: format,
width: width,
height: height,
tree: switch (tree) {
var tree? => path(tree),
null => null,
},
file: switch (file) {
var file? => path(file),
null => null,
},
mimeType: mimeType,
bytes: bytes,
notification: notification,
keys: switch (keys) {
var keys? => path(keys),
null => null,
},
semantics: switch (semantics) {
var semantics? => path(semantics),
null => null,
},
texts: texts,
address: address,
root: root,
statusBrightness: statusBrightness,
navBrightness: navBrightness,
verb: verb,
target: target,
aim: aim,
events: switch (events) {
var events? => path(events),
null => null,
},
eventCount: eventCount,
eventChannels: eventChannels,
eventTitles: eventTitles,
eventsDropped: eventsDropped,
frames: switch (frames) {
var frames? => path(frames),
null => null,
},
frameCount: frameCount,
frameWidth: frameWidth,
frameHeight: frameHeight,
frameIntervalMs: frameIntervalMs,
framesDropped: framesDropped,
settled: settled,
waited: waited,
landed: landed,
guessed: guessed,
stillTicking: stillTicking,
digest: digest,
strayFrames: strayFrames,
unchanged: unchanged,
failure: failure,
keyboard: keyboard,
);