The athlswqn Stripe workflow found 860 endpoints instead of the expected ~250-500 because deduplication failed. Investigation revealed the coordinator LLM was telling the writer to check the wrong path for existing_actions.json.
Root cause: The coordinator invented the existing_actions path when delegating to the writer - even though it was never told about this file. The path was non-deterministic:
| Run | Coordinator's invented path | Correct? |
|---|---|---|
| athlswqn (2026-02-04) | {workbench}/existing_actions.json | ❌ Wrong |
| Another (2026-02-02) | {workbench}/existing_actions.json | ❌ Wrong |
| Older (2026-01-31) | {workbench}/temp/existing_actions.json | ✅ Correct |
The coordinator inferred this file must exist (from context clues like deprecated_existing mentions) and guessed the path - sometimes correctly, sometimes not.
Impact in athlswqn:
echo '[]' > temp/existing_actions.jsonexisting_actions.json from {workbench}/temp/ to {workbench}/ (simpler path at workbench root)| File | Change |
|---|---|
mercury_actions.py | Write to {workbench}/existing_actions.json |
s3_utils.py | Look for artifact at new path |
writer/prompt.py | Hardcoded path updated |
agent.py | Comment updated |
existing_actions.json is created at workbench root (not in temp/)The coordinator prompt intentionally doesn't mention existing_actions.json - the writer knows where to find it from its own prompt. The coordinator was inventing this information to be "helpful", causing variance.
🤖 Generated with Claude Code