This is carried explicitly rather than re-derived by comparing the planned id against
directive.targetArtifactId, because those two values can legitimately be EQUAL — an agent
echoing the run's own sourceArtifactId back as its target is natural model behavior. A
value comparison then mistakes a caller-supplied id for model output (subjecting a trusted id
to the model-output guards) and, worse, lets an id the guards just rejected reappear through
the fallback and be treated as vetted. Provenance is a property of where the value CAME FROM,
so it is recorded at the point the decision is made.
directive: the agent named it. Model output — untrusted, and validated before use.
caller: it came from the run's sourceArtifactId (a server-side argument).
Who named the artifact a
versionplan points at.This is carried explicitly rather than re-derived by comparing the planned id against
directive.targetArtifactId, because those two values can legitimately be EQUAL — an agent echoing the run's ownsourceArtifactIdback as its target is natural model behavior. A value comparison then mistakes a caller-supplied id for model output (subjecting a trusted id to the model-output guards) and, worse, lets an id the guards just rejected reappear through the fallback and be treated as vetted. Provenance is a property of where the value CAME FROM, so it is recorded at the point the decision is made.directive: the agent named it. Model output — untrusted, and validated before use.caller: it came from the run'ssourceArtifactId(a server-side argument).