The glossary approval command should bind to an artifact revision, not just a stable glossary ID. If a translator revises the glossary while a human has an earlier version open, approving that screen must not accidentally approve the newer content that shares the same ID.
I would include the reviewed revision or content digest in the command and reject an approval when the current proposal differs. A fake-runner test can propose version A, present it for review, replace it with B, and then deliver the old approval. Proofreading should remain stopped until someone reviews B. That makes the human gate a statement about specific content rather than merely an event in the workflow.
That’s a really good point — thank you for calling this out. I completely agree that the approval should be tied to the specific revision being reviewed, rather than just the stable glossary ID. The A → B race-condition test is especially useful and makes the failure mode very clear. I’ll incorporate this into the design and tests.
The A-to-B fixture should also check what the reviewer sees after the stale approval is rejected. Keeping proofreading stopped is necessary, but a silent rejection leaves the human believing the earlier approval succeeded.
I would return the reviewed revision and the current proposal revision in a specific stale-review outcome, then present B for review again. That gives the command, workflow state, and interface one shared explanation of the race. A second approval of B should advance the workflow once, without reviving the earlier A approval.
Ahmet Özel
AI Engineer. Computer Vision, RAG and LLM agents.
The glossary approval command should bind to an artifact revision, not just a stable glossary ID. If a translator revises the glossary while a human has an earlier version open, approving that screen must not accidentally approve the newer content that shares the same ID.
I would include the reviewed revision or content digest in the command and reject an approval when the current proposal differs. A fake-runner test can propose version A, present it for review, replace it with B, and then deliver the old approval. Proofreading should remain stopped until someone reviews B. That makes the human gate a statement about specific content rather than merely an event in the workflow.