Finance Study Path Restructure — Implementation Plan

Design: 2026-04-14-finance-study-path-restructure-design.md Date: 2026-04-15


Batch 1: Note Splits (mechanical extraction)

Task 1.1 — Split order-books-and-venues.md into order-books.md + trading-venues.md

Source file: 2 - Areas/Finance/market-microstructure/order-books-and-venues.md (348 lines)

Steps:

  1. Read the full file (already done during design).
  2. Create 2 - Areas/Finance/market-microstructure/order-books.md:
    • Copy lines 1–164 (frontmatter through “Order Arrival as Queuing Theory”).
    • Update the frontmatter title to "Order Books" and tags to [market-microstructure, order-books, clob, matching-engine].
    • Add a ## See also footer with links to [[trading-venues]], [[matching-engine-system-design]], [[trading-fundamentals]].
    • Add a > [!tip] callout: “For dark pools, PFOF, RFQ, and the venue landscape, see trading-venues.”
  3. Create 2 - Areas/Finance/market-microstructure/trading-venues.md:
    • Copy lines 165–348 (from ”## Dark Pools” through end).
    • Add new frontmatter: title "Trading Venues", date 2026-04-15, tags [market-microstructure, dark-pools, pfof, rfq, venues], draft: false.
    • Add a > [!info] Prerequisites callout: “This note assumes familiarity with order-books — the CLOB structure, order types, and price-time priority.”
    • Keep the existing ## See also / companion notebook links, updating any self-references.
  4. Do NOT delete order-books-and-venues.md yet (that’s Batch 7).

Verification: Both new files exist, each ~175 lines, no content lost.


Task 1.2 — Create the-greeks.md from options-payoffs.md Greeks section

Source file: 2 - Areas/Finance/derivatives-pricing/options-payoffs.md (338 lines)

options-basics.md (162 lines) already exists at 2 - Areas/Finance/derivatives-pricing/options-basics.md and covers lines 1–199 of the old monolith (What Is an Option, Payoff Diagrams, Buying vs Selling, The Straddle, Short Straddle). Verify it is complete.

Steps:

  1. Read options-payoffs.md lines 200–338 (Greeks section through end).
  2. Create 2 - Areas/Finance/derivatives-pricing/the-greeks.md:
    • Frontmatter: title "The Greeks: Delta, Gamma, and the LP Connection", date 2026-04-15, tags [derivatives, options, greeks, gamma, delta], draft: false.
    • > [!info] Prerequisites callout linking to [[options-basics]].
    • Copy the Greeks content from options-payoffs.md lines 200–338: Delta, Gamma, Other Greeks table, “Putting It Together” comparison table.
    • Replace the ASCII art payoff diagrams (if any remain) with ![[diagram-name.svg]] placeholders for now (diagrams are Batch 5).
    • Add ## See also linking to [[options-basics]], [[impermanent-loss]], [[lp-profitability]], [[volatility]], [[lp-as-short-vol]].
    • Add companion notebook reference: [[code/the-greeks/notebook]] (notebook to be created later or as a separate task).
  3. Verify options-basics.md has correct See Also links pointing to [[the-greeks]] instead of internal sections.
  4. Do NOT delete options-payoffs.md yet (Batch 7).

Verification: the-greeks.md exists, ~175 lines, covers delta/gamma/ comparison table. options-basics.md links to it.


Task 1.3 — Split volatility.md → trim to concept + create lp-as-short-vol.md

Source file: 2 - Areas/Finance/derivatives-pricing/volatility.md (266 lines)

Steps:

  1. Read the full file (already done).
  2. Edit volatility.md in place:
    • Keep lines 1–239 (frontmatter through “Measuring Volatility: Practical Considerations” and its subsections).
    • Remove ”## The Connection to Impermanent Loss” section (lines 181–204) and replace with a 2-sentence pointer:
      The connection between volatility and LP profitability — how
      $\sigma_{\text{break-even}}$ acts as the LP's implied volatility —
      is developed in [[lp-as-short-vol]].
      
    • Update ## See also to include [[lp-as-short-vol]] and remove the now-redundant [[options-payoffs]] link (replace with [[options-basics]] and [[the-greeks]]).
    • Result: ~150 lines.
  3. Create 2 - Areas/Finance/defi-markets/lp-as-short-vol.md:
    • Frontmatter: title "The LP as Short Volatility", date 2026-04-15, tags [defi, amm, options, volatility, impermanent-loss], draft: false.
    • > [!info] Prerequisites callout: [[volatility]] (what vol is), [[options-basics]] and [[the-greeks]] (straddles and gamma), [[impermanent-loss]] (the IL formula), [[lp-profitability]] (break-even condition).
    • Content assembled from three sources:
      • volatility.md “Connection to Impermanent Loss” section (lines 181–204)
      • impermanent-loss.md “Connection to Options” section (lines 307–334)
      • options-payoffs.md “Putting It Together” comparison table (lines 290–312)
    • Structure:
      1. Brief intro: “This note ties together the three threads…”
      2. The IL↔σ² connection (from volatility.md)
      3. Break-even vol as the LP’s implied vol (from volatility.md)
      4. Short straddle vs LP comparison table (from options-payoffs.md)
      5. Where the analogy breaks (tails — from options-payoffs.md)
      6. ![[il-vs-straddle-overlay.svg]] placeholder (chart is Batch 5)
      7. See also: [[volatility]], [[the-greeks]], [[impermanent-loss]], [[lp-profitability]]
    • Result: ~100 lines.

Verification: volatility.md is ~150 lines with no LP connection detail. lp-as-short-vol.md exists, ~100 lines, all three source sections migrated.


Task 2.1 — Trim blockchain-transaction-lifecycle.md: move MEV bot pseudocode

Files:

  • 2 - Areas/Finance/defi-markets/blockchain-transaction-lifecycle.md (348 lines)
  • 2 - Areas/Finance/mev/mev-fundamentals.md (192 lines)

Steps:

  1. Read blockchain-transaction-lifecycle.md.
  2. Cut the ”### What a MEV Bot Actually Does (Pseudocode)” section (lines 171–248, including the pseudocode block and “Key points” list).
  3. Replace with a 3-line summary + wikilink:
    > [!tip] MEV bot mechanics
    > For the full pseudocode of a sandwich bot's core loop — mempool
    > scanning, profit simulation, bundle submission — see
    > [[mev-fundamentals#what-a-mev-bot-actually-does|What a MEV Bot Actually Does]].
  4. Read mev-fundamentals.md.
  5. Insert the cut pseudocode section before ## The MEV Supply Chain (line 117), under a new heading ## What a MEV Bot Actually Does. Add a brief intro sentence: “The following pseudocode shows the core loop of a sandwich bot (simplified — a production bot handles many more edge cases).”
  6. Result: lifecycle note ~270 lines, mev-fundamentals ~270 lines.

Verification: Lifecycle note no longer has pseudocode. mev-fundamentals has the pseudocode section. Both notes cross-link correctly.


Task 2.2 — Trim impermanent-loss.md: shorten options/adverse-selection connections

File: 2 - Areas/Finance/defi-markets/impermanent-loss.md (378 lines)

Steps:

  1. Read the file.
  2. Replace ”## Connection to Options: The LP as Short Volatility” section (lines 307–334) with a short pointer:
    ## Connection to Options
     
    The quadratic dependence on $|\ln r|$ and the log-price symmetry are
    not coincidental — an LP position is economically similar to a **short
    straddle**. The full mapping (gamma exposure, break-even as implied
    vol, where the analogy breaks in the tails) is in [[lp-as-short-vol]].
  3. Replace ”## IL Is an Adverse Selection Cost” section (lines 336–361) with a short pointer:
    ## IL as Adverse Selection
     
    IL can also be understood as the LP's adverse selection cost — the
    DeFi equivalent of a market maker losing to informed flow. The
    connection to [[kyle-lambda|Kyle's model]] is developed in
    [[kyle-lambda#connection-to-amms|Connection to AMMs]] (for multi-venue tokens) and
    applies equally to single-venue tokens where directional trading
    flow moves the price. See [[trading-fundamentals]] for the TradFi
    parallel.
  4. Result: ~300 lines.

Verification: The core derivation (intuition → setup → formula → properties → reference table → “why can’t the contract avoid IL?”) is intact. The connection sections are now pointers.


Task 2.3 — Trim pump-fun-economy.md: remove duplicate AMM/LP sections

File: 2 - Areas/Finance/case-studies/pump-fun-economy.md (448 lines)

Steps:

  1. Read the file.
  2. Replace ”### What Is an AMM and Why Does It Need Liquidity Providers?” section (lines 74–103) with:
    ### What Is an AMM?
     
    An AMM replaces the traditional order book with a mathematical formula
    that determines exchange rates from token reserves. See
    [[constant-product-amm]] for the full derivation. LPs deposit paired
    tokens to fund the pool and earn trading fees; the risk is
    [[impermanent-loss]].
  3. Shorten ”### Liquidity Providers as Passive Market Makers” section (lines 200–245). Keep the first paragraph and the LP return formula. Replace the IL explanation paragraphs with:
    The catch is **[[impermanent-loss]]**: when a memecoin's price
    collapses, the pool accumulates worthless tokens and loses SOL. For
    the full derivation see [[impermanent-loss]]; for break-even analysis
    see [[lp-profitability]].
  4. Result: ~350 lines.

Verification: The microstructure analysis, revenue model, net flow analysis, and structural insights are unchanged. The duplicate explanatory material is replaced with wikilinks.


Batch 3: New Content

Task 3.1 — Generate research prompts for market-fundamentals and settlement-and-clearing

Per the vault’s CLAUDE.md research-first process, these two notes require verified research before writing.

Steps:

  1. Generate a research prompt for market-fundamentals:
    • What is a financial market (function, not just definition)
    • Asset classes: equity, fixed income, derivatives, crypto — what makes each distinct
    • Market participants: buy-side vs sell-side, exchanges, clearinghouses, custodians, regulators
    • Why markets exist: price discovery, risk transfer, capital allocation
    • Ask the chatbot to cite sources and ask the user questions
  2. Generate a research prompt for settlement-and-clearing:
    • Trade lifecycle: execution → clearing → settlement
    • T+1 (US equities as of May 2024), T+2 (most other markets)
    • DvP (Delivery vs Payment): what it prevents
    • CCP (Central Counterparty): novation, netting, margin
    • Settlement fails: what happens, how common
    • Connection to DeFi: atomic settlement, no CCP needed, no netting
    • Ask the chatbot to cite DTCC documentation, BIS standards
  3. Present both prompts to user and wait for verified research.
  4. After research returns, write both notes following vault conventions.

Verification: Research prompts generated and presented. Notes written only after user returns with verified content.


Task 3.2 — Write the-greeks.md content (from Task 1.2 extraction + enrich)

This task completes the note created in Task 1.2 by ensuring it reads as a standalone note, not a fragment.

Steps:

  1. Read the extracted the-greeks.md from Task 1.2.
  2. Ensure the note has:
    • Proper > [!tip] Why this note exists callout connecting to IL/LP
    • > [!info] Notation callout for , , , ,
    • Clean transitions between Delta → Gamma → Other Greeks → LP mapping
    • The IL-gamma connection callout ()
    • Comparison table: short straddle vs LP position
    • SVG placeholders for delta curve, gamma curve
    • Questions to sit with
  3. Result: ~175 lines, reads as complete standalone note.

Verification: Note reads top-to-bottom without needing options-payoffs.md.


Task 3.3 — Write lp-as-short-vol.md content (from Task 1.3 extraction + enrich)

Completes the note created in Task 1.3.

Steps:

  1. Read the extracted lp-as-short-vol.md from Task 1.3.
  2. Ensure the note has:
    • > [!tip] Why this note exists callout: ties together volatility, options, and LP profitability
    • The IL ≈ -σ²/8 derivation pointer (link to impermanent-loss)
    • Break-even vol formula with interpretation: “this is the LP’s implied volatility”
    • Comparison table (from options-payoffs.md)
    • “Where the analogy breaks” section (tails: straddle linear, LP bounded by sech)
    • SVG placeholder for IL-vs-straddle overlay
    • Questions to sit with
  3. Result: ~100 lines.

Verification: Note reads as the capstone connecting the options and DeFi threads.


Batch 4: Architecture Diagrams (8 SVGs)

Task 4.1 — Matching engine architecture diagrams (6 SVGs)

Output directory: 2 - Areas/Finance/market-microstructure/diagrams/ Render scripts: docs/diagrams/matching-engine-*.py

Follow existing conventions from docs/diagrams/gpg-*.py:

  • # /// script header with dependencies = ["graphviz"]
  • Output to area-specific diagrams/ subdirectory
  • Vault color palette: #5C6BC0 (blue), #66BB6A (green), #E57373 (red), #E3F2FD/#E8F5E9/#F5F5F5 (light fills)
  • Helvetica font, 12px+ node labels, 16px titles

Steps:

  1. Create docs/diagrams/matching-engine-hla.py:
    • Graphviz diagram: Traders → Gateway → Sequencer → Matching Engine → (Market Data, Drop Copy, Risk Engine)
    • Output: matching-engine-hla.svg
  2. Create docs/diagrams/matching-engine-dataflow.py:
    • Ring buffers between stages, journal write, consumer cursors
    • Output: matching-engine-dataflow.svg
  3. Create docs/diagrams/matching-engine-orderbook.py:
    • svgwrite diagram: SortedDict with price levels, deque per level, orders dict for O(1) cancel
    • Output: matching-engine-orderbook.svg
  4. Create docs/diagrams/matching-engine-partitioning.py:
    • Sequencer → Partitioner → N engine instances (AAPL, TSLA, GOOG)
    • Output: matching-engine-partitioning.svg
  5. Create docs/diagrams/matching-engine-failover.py:
    • Journal → Primary Engine + Standby Engine, promotion arrow
    • Output: matching-engine-failover.svg
  6. Create docs/diagrams/matching-engine-marketdata.py:
    • L1 (NBBO) and L2/L3 (depth) feeds, snapshot + delta pattern
    • Output: matching-engine-marketdata.svg
  7. Run all 6 scripts: uv run docs/diagrams/matching-engine-*.py
  8. Edit matching-engine-system-design.md:
    • Replace ASCII art at lines 71-89 with ![[matching-engine-hla.svg]]
    • Replace ASCII art at lines 343-347 with ![[matching-engine-partitioning.svg]]
    • Replace ASCII art at lines 382-391 with ![[matching-engine-failover.svg]]
    • Add ![[matching-engine-dataflow.svg]] in “How data flows between stages” section
    • Add ![[matching-engine-orderbook.svg]] in “Data structure: the order book” section
    • Add ![[matching-engine-marketdata.svg]] in “Step 8: Market data” section

Verification: Run scripts, verify SVGs render. Open note and confirm embeds display correctly.


Task 4.2 — Transaction lifecycle diagram (1 SVG)

Output directory: 2 - Areas/Finance/defi-markets/diagrams/ Render script: docs/diagrams/transaction-lifecycle.py

Steps:

  1. Create docs/diagrams/transaction-lifecycle.py:
    • Graphviz TB layout: Wallet → P2P Network → Mempool → (Searchers branch) → Builder → Block Producer → Execution → Confirmation
    • Color-code: user actions (blue), public visibility (red warning), MEV actors (purple)
    • Output: transaction-lifecycle.svg
  2. Run the script.
  3. Edit blockchain-transaction-lifecycle.md:
    • Replace ASCII art at lines 267-290 with ![[transaction-lifecycle.svg]]

Verification: SVG renders. Embedded in note correctly.


Task 4.3 — Sandwich attack pool state diagram (1 SVG)

Output directory: 2 - Areas/Finance/mev/diagrams/ Render script: docs/diagrams/sandwich-attack-states.py

Steps:

  1. Create docs/diagrams/sandwich-attack-states.py:
    • svgwrite diagram showing 4 pool states side by side: (1) Initial , (2) After front-run , (3) After victim , (4) After back-run — with arrows showing SOL/token flows and price at each state
    • Output: sandwich-attack-states.svg
  2. Run the script.
  3. Embed in sandwich-attacks.md after the “Step by Step” section.

Verification: SVG renders. Pool states are visually clear.


Batch 5: Function Shape Charts (10 SVGs)

Task 5.1 — Options charts (4 SVGs)

Render script: docs/diagrams/options-charts.py (single matplotlib script rendering multiple SVGs)

Steps:

  1. Create docs/diagrams/options-charts.py:
    • Uses matplotlib with vault color palette
    • # /// script header with dependencies = ["matplotlib", "numpy"]
    • Renders 4 SVGs to 2 - Areas/Finance/derivatives-pricing/diagrams/: a. call-put-payoffs.svg — hockey stick payoffs for long call and long put on same axes. Strike K marked. Premium line (dashed) showing profit. b. short-straddle-pnl.svg — inverted V with premium collected, break-even points marked, loss zones shaded. c. delta-curve.svg — S vs Δ for long call (0→1 sigmoid) and long put (-1→0). ATM marked at Δ≈0.5. d. gamma-curve.svg — S vs Γ, peaked at ATM, decaying to zero both sides. Annotation: “highest curvature = fastest delta change.”
  2. Run: uv run docs/diagrams/options-charts.py
  3. Embed in notes:
    • options-basics.md: ![[call-put-payoffs.svg]] in Payoff Diagrams section, ![[short-straddle-pnl.svg]] in Straddle section.
    • the-greeks.md: ![[delta-curve.svg]] in Delta section, ![[gamma-curve.svg]] in Gamma section.

Verification: Run script, open SVGs, verify shapes are correct and colors match vault palette.


Task 5.2 — DeFi charts (5 SVGs)

Render script: docs/diagrams/defi-charts.py

Steps:

  1. Create docs/diagrams/defi-charts.py:
    • Renders 5 SVGs: a. il-curve.svg2 - Areas/Finance/defi-markets/diagrams/ IL(r) = 2√r/(r+1) - 1 plotted for r from 0.1 to 10 (log scale x-axis). Symmetric shape visible. Key points labeled (r=2: -5.7%, r=0.5: -5.7%). b. amm-hyperbola.svg2 - Areas/Finance/defi-markets/diagrams/ xy=k curve with a trade marked: tangent line at pre-trade point (marginal price) and secant line to post-trade point (execution price). Gap between them = price impact. c. price-impact-comparison.svg2 - Areas/Finance/defi-markets/diagrams/ α/(1+α) (AMM) vs α (Kyle linear) plotted together. Concavity visible at large α. d. bonding-curve-shapes.svg2 - Areas/Finance/defi-markets/diagrams/ Linear, quadratic, exponential, and virtual-AMM curves overlaid on same axes. Supply on x-axis, price on y-axis. e. break-even-frontier.svg2 - Areas/Finance/defi-markets/diagrams/ σ on y-axis, V_d/L on x-axis. The break-even curve divides the plane into “LP profitable” (green, below) and “LP unprofitable” (red, above). Typical pool positions annotated (stablecoin pair, ETH/USDC, memecoin).
  2. Run: uv run docs/diagrams/defi-charts.py
  3. Embed in notes:
    • impermanent-loss.md: ![[il-curve.svg]] before Reference Table
    • constant-product-amm.md: ![[amm-hyperbola.svg]] in Geometric Interpretation, ![[price-impact-comparison.svg]] in Price Impact
    • bonding-curves.md: ![[bonding-curve-shapes.svg]] in Common Curve Shapes
    • lp-profitability.md: ![[break-even-frontier.svg]] in Break-Even Condition

Verification: Run script, open SVGs, verify math is correct (spot check: IL at r=2 should be -5.72%).


Task 5.3 — IL vs short straddle overlay (1 SVG)

Render script: docs/diagrams/il-straddle-overlay.py

Steps:

  1. Create docs/diagrams/il-straddle-overlay.py:
    • Overlay two curves on same axes:
      • IL: sech(s/2) - 1 (bounded, flattens toward -100%)
      • Short straddle P&L: premium - |s| (linear tails)
    • x-axis: log-price change s = ln(r)
    • Annotations: “match here” (near s=0), “diverge here” (tails), “IL bounded” vs “straddle linear”
    • Output: 2 - Areas/Finance/defi-markets/diagrams/il-straddle-overlay.svg
  2. Run the script.
  3. Embed in lp-as-short-vol.md.

Verification: The two curves agree near s=0 and diverge in tails.


Batch 6: Manim Animations (6 animations)

Task 6.1 — Market order walking the book

Script: animations/order-book-walk.py

Animate a large buy order consuming ask-side depth levels one by one. Show the order book depth chart updating in real time: bars shrinking, price markers moving, effective spread widening.


Task 6.2 — Reserve rebalancing (IL mechanism)

Script: animations/il-rebalancing.py

Start with balanced pool (50/50 visual). External price indicator moves. Arbitrageurs trade: token X leaves, token Y enters. Bars rebalance. LP value vs HODL value shown as two counters diverging.


Task 6.3 — Delta shifting with price

Script: animations/delta-gamma.py

Show payoff curve of a call option. Tangent line at current price = delta. As price slides left/right, tangent line rotates. A separate delta gauge or curve updates in sync. The speed of rotation IS gamma — label it.


Task 6.4 — Sandwich attack sequence

Script: animations/sandwich-attack.py

4-beat animation: (1) Pool at initial state with pending victim tx visible, (2) Bot front-runs → pool shifts → price rises (annotated), (3) Victim tx executes at worse price (annotated with loss), (4) Bot back-runs → profit extracted (annotated).


Task 6.5 — Bonding curve lifecycle

Script: animations/bonding-curve-lifecycle.py

Animate: empty curve → tokens minting along it → SOL accumulating in reserve bar → threshold reached → “GRADUATION” flash → reserves flow into AMM pool representation → secondary trading begins.


Task 6.6 — Fee vs IL race

Script: animations/fee-vs-il-race.py

Price path (GBM) on top. Two cumulative counters below: green (fees, climbing steadily) and red (IL, spiking on big moves). When red crosses green, the LP is underwater. Run multiple paths to show the variance.


Task 7.1 — Rewrite study-guide.md

File: 2 - Areas/Finance/study-guide.md

Rewrite completely to reflect the new two-track structure:

  • Track A: 18 steps, 6 phases (1a, 1b, 2, 3, 4, 5, 6)
  • Track B: 6 steps (B1–B6)
  • Per step: [[note]] link, [[code/topic/notebook]] link (if any), ~time estimate, “Focus on” bullets, “You’re ready when” checkpoint
  • Tips section at the bottom

Use the tables from the design document as the source of truth for step numbering and note assignments.


Update all references to split/renamed notes across the vault:

[[order-books-and-venues]][[order-books]] or [[trading-venues]]:

  • market-microstructure/_index.md line 36 → [[order-books]]
  • market-microstructure/spread-decomposition.md line 129 → [[order-books]]
  • study-guide.md line 266 → [[order-books]]
  • matching-engine-system-design.md line 11 → [[order-books]]
  • matching-engine-system-design.md line 52 → [[order-books#price-time-vs-pro-rata-matching|price-time vs pro-rata]]
  • matching-engine-system-design.md line 550 → [[order-books]] + [[trading-venues]]

[[options-payoffs]][[options-basics]] or [[the-greeks]]:

  • derivatives-pricing/_index.md line 23 → [[options-basics]] + [[the-greeks]]
  • study-guide.md line 132 → [[options-basics]]
  • defi-markets/lp-profitability.md line 39 → [[options-basics]]
  • defi-markets/impermanent-loss.md line 312 → [[the-greeks]]
  • defi-markets/constant-product-amm.md line 20 → split into two lines: [[options-basics]] + [[the-greeks]]
  • derivatives-pricing/volatility.md lines 173, 204, 263 → [[the-greeks]] or [[options-basics]] as appropriate

Reading order callout in constant-product-amm.md:

  • Rewrite the > [!tip] Recommended reading order callout (lines 13-25) to match the new 18-step Track A path.

code/index.md:

  • Update notebook listings for any new notebooks (code/the-greeks/, code/options-basics/).

derivatives-pricing/_index.md:

  • Update row for options-payoffs to list options-basics + the-greeks.

Task 7.3 — Delete old files

After verifying all content has been migrated and all wikilinks updated:

  • Delete 2 - Areas/Finance/market-microstructure/order-books-and-venues.md
  • Delete 2 - Areas/Finance/derivatives-pricing/options-payoffs.md

Batch Summary

BatchTasksDepends onCan parallelize?
1Note splits (1.1, 1.2, 1.3)NothingYes — all 3 are independent
2Note trims (2.1, 2.2, 2.3)NothingYes — all 3 are independent
3New content (3.1, 3.2, 3.3)Batch 1 (for extracted content)3.1 blocks on user; 3.2 and 3.3 after Batch 1
4Architecture diagrams (4.1, 4.2, 4.3)NothingYes — all independent
5Function charts (5.1, 5.2, 5.3)Batches 1-3 (notes must exist for embedding)Yes — all independent
6Manim animations (6.1–6.6)Nothing (animations are standalone)Yes — all independent
7Study guide + wikilinks + deletionsAll previous batchesSequential (7.1 → 7.2 → 7.3)

Batches 1, 2, 4, and 6 can all start in parallel. Batch 3 starts after Batch 1. Batch 5 starts after Batches 1-3. Batch 7 is the final pass after everything else is done.