English TL;DR Coordinates multiple in-flight tickets that touch overlapping surfaces / SoT / feature-flags. Main pipeline assumes "one change at a time" — this doc fills the gap when that assumption breaks. Added to Phase 0 (detect: grep open tickets for shared surface), Phase 2 (agree merge order; define compatibility window; manifest gets
co_required/depends_onlink to sibling manifest), Phase 5 (review checks both sibling branches simultaneously), Phase 6 (merge order enforced; feature-flag sequencing captured). Four coordination strategies: sequencing (hard dep: one merges, the other rebases), branch isolation + merge-time conflict resolution (independent branches joined at merge time), joint design + split implementation (shared plan, separate execution by different owners), merge into one ticket (atomicity beats coordination overhead for tightly-coupled changes). Most common failure: two tickets each pass their own review but together produce a desynced state — manifestco_requiredplus shared integration test is the fix.
When multiple people / multiple tickets touch overlapping surfaces simultaneously, extra coordination is required to prevent desync.
The methodology's main pipeline assumes "one change at a time." In practice, the following occurs regularly:
- Two tickets modifying the same table's schema at the same time.
- One person changing an API contract while another depends on that same contract.
- Feature-flag flip timing spanning the release schedules of multiple tickets.
- A shared component modified by two features in parallel.
Without coordination, each ticket walks through Phase 0→7 on its own and the conflict is discovered only after release.
Add one check in Phase 0 Clarify:
## Concurrent change risk
- Are there other in-flight tickets touching the same surface right now?
- Is the same source of truth being modified by someone else in parallel?
- Will shared components (utils / shared component / base class) be modified simultaneously?Mark concurrency risk in the Source of Truth Map:
| Information | Source of Truth | Other ticket modifying it concurrently |
|-------------|-----------------|----------------------------------------|
| orders.status enum | DB migration | PROJ-1234 (also changing status) |
| Shared Button component | ComponentLib | PROJ-1235 (also changing Button) |Based on the conflict map, choose a strategy (see below).
When: two tickets modify the same source of truth and cannot be merged.
Steps:
- Decide which ticket ships first.
- The later ticket plans in Phase 2 with the earlier ticket's outcome as a precondition.
- When the first ticket completes Phase 7, notify the second to update its plan.
Risk: if the first ticket slips, the second is blocked.
When: two tickets modify different parts of the same file.
Steps:
- Each develops on an independent branch.
- The first to merge ships normally.
- The second rebases before merging and resolves conflicts.
- The later ticket's Phase 5 (Review) adds an extra check: is post-merge behavior still correct.
When: two tickets modify different aspects of the same source of truth but are logically coupled.
Steps:
- Phase 0–2 of the two tickets runs jointly (or at minimum, each reviews the other's plan).
- Within the plan, the scope and interface of each side are explicitly marked.
- Implementation is independent.
- Phase 5 (Review) is cross-reviewed.
When: the two tickets overlap heavily; splitting is less efficient than merging.
Steps:
- Merge into one ticket; run Phase 0→7 once.
- Mark in the plan that this originated from two independent requirements.
- If different people need to implement, split in Phase 4.
Shared components (base class, shared widget, utility function) have the broadest blast radius on modification.
- Before modifying a shared component, list all consumers — mandatory in Phase 1.
- Shared-component changes must not smuggle in feature logic — split into two commits:
- First commit: the general shared-component change.
- Second commit: the feature logic.
- If a shared component is being modified by multiple tickets concurrently — force Strategy 3 (joint design).
Things to watch for when multiple feature flags coexist:
-
Flags must not have implicit dependencies.
- ❌ When Flag A is on, assume Flag B is also on.
- ✅ Every flag is independently controlled; combinations are tested in Phase 3.
-
Flag lifecycles must be explicit.
| Flag | Enable date | Full rollout | Removal date | |------|-------------|--------------|--------------| | NEW_SHOP_UI | 4/15 | 4/22 | 5/1 | | DIAMOND_PURCHASE | 4/18 | 4/25 | 5/5 |
-
A flag that lingers unremoved is technical debt — after Phase 8 observation closes, flag removal should become a follow-up ticket.
- Team ≤ 2 people; verbal coordination suffices.
- The change's touched surfaces do not overlap with any other in-flight ticket.
- The change lives in an independent module with no shared dependencies.