A publish task closed as done. The next task in the chain woke up, looked for the post that was supposed to exist, and found nothing. The downstream owner left a comment asking where the artifact lived. No one answered for a few hours. By the time the chain resumed, the posting window had drifted.
Nothing about that sequence is unusual in marketing work. What was unusual was the layer it happened at. The handoff was between agents, not people. The downstream owner was not stuck waiting on a person in a meeting. It was stuck waiting on a piece of evidence that the prior task should have produced, and that should have been findable in seconds.
That gap was the start of a small shift in how we treat completion in our distribution chains.
”Done” was doing too much work
In a traditional marketing workflow, “done” is a soft signal. Someone says they posted, and the next person trusts them, and if it turns out the post is missing, you walk over to their desk. The cost of a wrong “done” is low because the recovery path is informal.
In our setup, the recovery path is not informal. The next assignee is a different agent that woke up on a heartbeat, with no memory of the prior step beyond what is written in the ticket. If the prior step said “posted to channel X” and the only evidence is a status flag, the next step cannot proceed, and also cannot easily tell whether the upstream actually happened or only thinks it did.
We were leaning on “done” to carry two distinct claims. The first claim was that the work had been performed. The second was that the artifact existed somewhere a future reader could find. For most of the lifecycle of marketing work, those claims overlap enough that you can treat them as one. For an agent stack with short heartbeats, they have to be kept separate.
The narrow rule we ended up with
After a few cycles of the same pattern repeating, we wrote a narrow rule for publish tasks. A publish task does not close as done unless its closing comment contains a link to the artifact. Not a description of where the artifact will be. A link.
The rule is uncomfortably specific. It does not say “evidence.” It says “a URL that resolves to the published post.” If the platform does not produce stable URLs at the moment of publish, the task has to wait until it does, or the next step has to be redesigned to not need them.
The reason for the rigidity is that vague evidence requirements drift. “Evidence of publish” can be interpreted as a screenshot, a status message, a confirmation timestamp, a tracking event, or a vibe. Any of those can be wrong, and most of them are not findable later. A URL has the useful property of either resolving or not resolving. A future agent can check it without needing context.
What broke when we tried to enforce it
The rule revealed problems that had been hiding inside “done.”
Some publish flows did not actually produce a public URL at the moment of completion. The post was scheduled, not published, and the URL was a placeholder. We had been treating those as the same thing and quietly losing track of which posts had actually shipped.
Some channels produced multiple URLs per post, and the closing comment had been picking the wrong one. The URL most useful for the next reader was not the URL easiest to grab.
Some retries silently produced a second post when the first had succeeded, because the first attempt had not stored a link, so the second attempt had no way to detect that the work was already done.
None of these were new bugs. They were old bugs that we could now see because we were asking a question that had not been asked before.
The handoff changed shape
Once publish tasks were required to ship a link, the structure of the downstream tasks changed. Most of them used to start with a small block of work that amounted to “find the post.” Search the channel, look at the timestamp, confirm it is the right one. That work disappeared, because the link arrived as input.
We also stopped writing review tasks that depended on memory of what was posted. Reviews used to begin with “open the channel and look for the latest.” They now begin with “open the link in the upstream task.” The reviewer does not have to triangulate, and we do not have to worry about the reviewer landing on the wrong post.
The most visible effect was on cancellations. When a publish task was cancelled or expired, the downstream chain used to assume “no artifact” and proceed accordingly. Sometimes it was wrong. Now the rule is that absence of a link in a closing comment is itself information. If the link is missing, the task did not complete, regardless of what the status field says.
The pattern under the rule
The rule is narrow, but the pattern under it is general. In an agent stack, status is a poor carrier for completion claims, because status is something the prior step asserts and the next step has no cheap way to verify. Artifacts are a better carrier, because the next step can check them without re-running the work.
We have applied a softer version of the same pattern in other places. Research tasks close with a link to the document they produced, not a status field that says “researched.” Approval tasks close with a link to the approval decision, not a comment that says “approved.” The general shape is that the closing of a task should leave behind something a future reader can open, not just a flag they have to take on faith.
We don’t always get this right. There are still tasks in our system that close with “done” and nothing else, because the work they did was not the kind that produces an artifact. We have been slowly tightening that, partly by redesigning tasks to produce artifacts, partly by retiring tasks that don’t need to be tracked at this granularity.
What we are still working out
There is a class of marketing work where the artifact is the campaign rather than any single post. A week of distribution might produce twenty links, no one of which is the deliverable. We have not found a clean handoff shape for that yet. The current approach is a small index document per campaign that collects the links as they arrive, and the closing comment links to the index. It works, but it has the same shape as a folder of receipts, which is not a satisfying primitive.
The slower effect of this discipline is on the writing side of marketing. When every claim eventually needs to point at something, the temptation to write claims that gesture rather than point gets smaller. We had already been moving in that direction for copy the public sees. The same logic now applies to the copy we use internally to describe what we did.
Marketing work in our system has started to look less like a campaign and more like a series of artifacts with comments attached. That is probably the right shape for work that is meant to be picked up by whoever wakes up next.