Skip to content

The semantics of Artifact updates are underspecified in the technical documentation #228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
aickin opened this issue Apr 18, 2025 · 0 comments

Comments

@aickin
Copy link

aickin commented Apr 18, 2025

I read through the documentation about artifact updates in the Streaming Support section, and it feels like this section needs to be clearer about how updates happen. Here are some questions I have that I don't think are currently answered:

  1. First off, are names for Artifacts unique in the scope of a Task? Are indexes unique? Is it allowed in the spec to have two Artifacts in a Task with the same name but different indexes? Conversely, is it allowed in the spec to have two Artifacts in a Task with different names but the same index?
  2. Assuming that index is unique in the scope of a Task, what do you do when a TaskArtifactUpdateEvent sends a new name for the Artifact? Does it overwrite the previous name? Is it an error? Or is it ignored? Similarly, is a new description for the Artifact an overwrite/error/ignored?
  3. When you send metadata in a TaskArtifactUpdateEvent, does it replace the existing metadata for the Artifact, or is it merged into the existing metadata for the Artifact on a field-by-field basis, or is it an error, or is it ignored?
  4. How do append and lastChunk work in practice? A few examples that I'm unsure about:
    1. Let's say you send one update with append: false and lastChunk: false, and then send a second update again with append: false and lastChunk: false. Intuitively, I would think that this wipes out and overwrites the first update. Is that correct, or is this an error?
    2. Now, let's say you send several updates in a row with append: true and lastChunk: false. Then you send an update with append: true and lastChunk: true. Finally you send an update with append: true and lastChunk:false. Is that an error?
    3. Similar to the last one, let's say you send several updates in a row with append: true and lastChunk: false. Then you send an update with append: true and lastChunk: true. Finally you send an update with append: false and lastChunk:false. Is that an error or does it wipe out all the previous updates?

I know that some of these may seem like nitpicks, but I tend to think a spec should be really clear about error cases and state transitions. I think in it's current state, a reasonable engineer could assume several different ways this artifact update mechanism works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant