{
  "$schema": "https://schema.org/CreativeWork",
  "agent": {
    "name": "VCN #49 The Swarm",
    "version": "1.0.0",
    "updated": "2026-08-12"
  },
  "content": {
    "type": "presentation",
    "full_text": "https://vcn-49-the-swarm.vercel.app/llms.txt",
    "full_text_note": "Complete prose of the session in the same words as the slides. Read this instead of scraping index.html: the deck is one static page and every slide is addressable at /#N.",
    "slide_url_template": "https://vcn-49-the-swarm.vercel.app/#{n}",
    "slides": 18,
    "slides_list": [
      {
        "n": 1,
        "title": "THE SWARM.",
        "url": "https://vcn-49-the-swarm.vercel.app/#1"
      },
      {
        "n": 2,
        "title": "One agent is a queue.",
        "url": "https://vcn-49-the-swarm.vercel.app/#2"
      },
      {
        "n": 3,
        "title": "So open ten agents on the same folder.",
        "url": "https://vcn-49-the-swarm.vercel.app/#3"
      },
      {
        "n": 4,
        "title": "The conductor pattern.",
        "url": "https://vcn-49-the-swarm.vercel.app/#4"
      },
      {
        "n": 5,
        "title": "Worktrees, not branches in place.",
        "url": "https://vcn-49-the-swarm.vercel.app/#5"
      },
      {
        "n": 6,
        "title": "A worktree is not a sandbox.",
        "url": "https://vcn-49-the-swarm.vercel.app/#6"
      },
      {
        "n": 7,
        "title": "One command per task. One arena per agent.",
        "url": "https://vcn-49-the-swarm.vercel.app/#7"
      },
      {
        "n": 8,
        "title": "Three agents, one repo, three hours of work in one.",
        "url": "https://vcn-49-the-swarm.vercel.app/#8"
      },
      {
        "n": 9,
        "title": "The teardown that ate a venv, quietly.",
        "url": "https://vcn-49-the-swarm.vercel.app/#9"
      },
      {
        "n": 10,
        "title": "Three things the dry run changed.",
        "url": "https://vcn-49-the-swarm.vercel.app/#10"
      },
      {
        "n": 11,
        "title": "Pick work that does not share a file.",
        "url": "https://vcn-49-the-swarm.vercel.app/#11"
      },
      {
        "n": 12,
        "title": "One agent per tree, and give it a name that survives.",
        "url": "https://vcn-49-the-swarm.vercel.app/#12"
      },
      {
        "n": 13,
        "title": "Poll the fleet. Do not help.",
        "url": "https://vcn-49-the-swarm.vercel.app/#13"
      },
      {
        "n": 14,
        "title": "Fan-out is parallel. Fan-in is one at a time.",
        "url": "https://vcn-49-the-swarm.vercel.app/#14"
      },
      {
        "n": 15,
        "title": "Resolve by intent, not by line.",
        "url": "https://vcn-49-the-swarm.vercel.app/#15"
      },
      {
        "n": 16,
        "title": "Unlink first, then remove.",
        "url": "https://vcn-49-the-swarm.vercel.app/#16"
      },
      {
        "n": 17,
        "title": "When to fan out, and when not to.",
        "url": "https://vcn-49-the-swarm.vercel.app/#17"
      },
      {
        "n": 18,
        "title": "You came with one agent. You leave with a fleet.",
        "url": "https://vcn-49-the-swarm.vercel.app/#18"
      }
    ]
  },
  "setup": {
    "description": "Agent-readable setup guide: confirm your git supports worktrees and pick a repo with more than one independent task, before doors.",
    "url": "https://vcn-49-the-swarm.vercel.app/setup.txt"
  },
  "publisher": {
    "author": "Rayyan Zahid",
    "organization": "Vibe Coding Nights",
    "url": "https://vcn-49-the-swarm.vercel.app"
  },
  "event": {
    "series": "Vibe Coding Nights",
    "number": 49,
    "season": "Off the Leash",
    "theme": "The Swarm - run parallel coding agents in git worktrees",
    "date": "2026-08-12",
    "venue": "Frontier Tower, 10th Floor Annex, 995 Market St, San Francisco",
    "rsvp": "https://luma.com/vcn-49-the-swarm"
  },
  "hosts": [
    "Rayyan Zahid",
    "Michalis Vasileiadis",
    "Eric Mockler",
    "Devinder Sodhi"
  ],
  "primary_sources": [
    {
      "title": "git worktree",
      "url": "https://git-scm.com/docs/git-worktree"
    },
    {
      "title": "CodeCRDT: Observation-Driven Coordination for Multi-Agent LLM Code Generation (600 trials; +21%/-39% task-shape dependent, 5-10% semantic conflict rate)",
      "url": "https://arxiv.org/abs/2510.18893"
    },
    {
      "title": "git merge",
      "url": "https://git-scm.com/docs/git-merge"
    },
    {
      "title": "Environment variables (git author/committer identity)",
      "url": "https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables"
    },
    {
      "title": "Claude Code",
      "url": "https://docs.claude.com/en/docs/claude-code"
    },
    {
      "title": "Nebius Token Factory",
      "url": "https://docs.tokenfactory.nebius.com"
    },
    {
      "title": "z.ai",
      "url": "https://z.ai"
    }
  ],
  "policy": {
    "discoveryMode": "open",
    "license": "CC-BY-SA-4.0"
  },
  "documents": [
    {
      "id": "llms",
      "title": "Full session prose for agents",
      "url": "https://vcn-49-the-swarm.vercel.app/llms.txt",
      "media_type": "text/plain",
      "description": "Every actionable claim on a slide, in the same words. The recommended entry point for an agent: no HTML parsing, no slide-only truth."
    },
    {
      "id": "setup",
      "title": "Before-doors setup",
      "url": "https://vcn-49-the-swarm.vercel.app/setup.txt",
      "media_type": "text/plain",
      "description": "Five-command preflight, how to pick three non-overlapping tasks, and the linked-venv teardown hazard."
    },
    {
      "id": "deck",
      "title": "The deck",
      "url": "https://vcn-49-the-swarm.vercel.app",
      "media_type": "text/html",
      "description": "Single static page, 18 slides, each addressable at /#N."
    }
  ],
  "findings": {
    "description": "Two failures measured by running this night's lab end to end on a scratch repo on 2026-08-12, before the deck was written. Both pass silently. Everything else in the plan executed as drafted.",
    "measured_on": "2026-08-12",
    "illustrative_content": "none",
    "items": [
      {
        "id": "worktree-shares-git-config",
        "title": "A worktree is not a sandbox: .git/config is shared",
        "slides": [
          6,
          12,
          13
        ],
        "symptom": "Three agents each running `git config user.email` concurrently race on the shared .git/config. Two print a non-fatal lock error, all three commit anyway, and every commit is authored by the race winner while the commit messages stay correct.",
        "isolated": [
          "working tree",
          "index",
          "HEAD",
          "checked-out branch"
        ],
        "shared": [
          ".git/config",
          "refs / branches",
          "object store",
          "hooks",
          "stash"
        ],
        "fix": "Scope identity to the process: GIT_AUTHOR_NAME / GIT_AUTHOR_EMAIL / GIT_COMMITTER_NAME / GIT_COMMITTER_EMAIL, or `git -c user.name=... commit`. A worker may write its tree, never the repo's shared config.",
        "platform": "platform-independent"
      },
      {
        "id": "worktree-remove-follows-reparse-point",
        "title": "git worktree remove follows a junction out of the tree and deletes the target, exit 0",
        "slides": [
          9,
          16
        ],
        "symptom": "A worktree carrying a .venv junction that points outside itself. `git worktree remove --force` exits 0 with no output and the target directory's contents are gone. `rm -rf` and shutil.rmtree behave the same way.",
        "why_it_matters": "Linking a shared .venv or node_modules into each throwaway tree is exactly what makes N worktrees cheap, so the swarm pattern and this hazard arrive together.",
        "fix": "Unlink every reparse point before removing the tree: `rmdir <tree>/.venv` on Windows, `unlink <tree>/.venv` on macOS and Linux, then `git worktree remove`.",
        "platform": "reproduced on Windows with NTFS junctions; byte-for-byte behaviour on other filesystems is unverified by this session"
      }
    ]
  }
}
