Problem
Factory dispatches independent schema-changing issues in parallel even when they allocate from a serialized global migration namespace (for example, Drizzle migration numbers). Each branch chooses “the next” number; whichever PR lands first invalidates the others and forces repeated renumber/merge repair.
This is not a dependency-ordering problem. The issues can be logically unrelated and have no declared prerequisite edge; they merely contend for the same exclusive namespace.
Observed cost
Evidence comes from head-of-experiments’ survey of the 2026-07-18/19 Factory run in AgentWorkforce/hoopsheet:
Emoji reactions and @mentions are independent features. Their collision is proof that prerequisite graphs cannot model the shared counter.
Not a duplicate of #133
Factory #133, “Dependency-aware dispatch ordering,” handled declared prerequisite chains: issue B consumes issue A’s output, so they should not dispatch together. It cannot see independent issues contending for a shared migration namespace, and closed on 2026-07-20 without covering resource allocation or schema-merge serialization.
Expected behavior
Factory should prevent parallel work from racing an exclusive, repository-global migration namespace, without requiring fake dependency edges between unrelated issues.
Fix directions
Either:
- allocate/reserve migration identifiers centrally at merge time, or
- detect schema/migration-touching changes and serialize their merge/rebase queue while allowing implementation to proceed in parallel.
Whichever mechanism is chosen should be reusable for other exclusive repository resources, observable in run reports, and covered by a test with two independent issues that both create the next migration.
Problem
Factory dispatches independent schema-changing issues in parallel even when they allocate from a serialized global migration namespace (for example, Drizzle migration numbers). Each branch chooses “the next” number; whichever PR lands first invalidates the others and forces repeated renumber/merge repair.
This is not a dependency-ordering problem. The issues can be logically unrelated and have no declared prerequisite edge; they merely contend for the same exclusive namespace.
Observed cost
Evidence comes from head-of-experiments’ survey of the 2026-07-18/19 Factory run in
AgentWorkforce/hoopsheet:0012→0013,0013→0015(“0013 taken by emoji reactions”), and0014→0015(“0014 taken by @mentions”);533a33aadded speculative migration-journal entries as a workaround for a conflict the orchestrator should prevent.Emoji reactions and @mentions are independent features. Their collision is proof that prerequisite graphs cannot model the shared counter.
Not a duplicate of #133
Factory #133, “Dependency-aware dispatch ordering,” handled declared prerequisite chains: issue B consumes issue A’s output, so they should not dispatch together. It cannot see independent issues contending for a shared migration namespace, and closed on 2026-07-20 without covering resource allocation or schema-merge serialization.
Expected behavior
Factory should prevent parallel work from racing an exclusive, repository-global migration namespace, without requiring fake dependency edges between unrelated issues.
Fix directions
Either:
Whichever mechanism is chosen should be reusable for other exclusive repository resources, observable in run reports, and covered by a test with two independent issues that both create the next migration.