# Repo forensics: github.com/eyalgever/empathic-art

## Source

Private GitHub repository `eyalgever/empathic-art`, cloned via the GitHub CLI on 28 August 2026 at 12:28 UTC. Analysis performed on the working tree at commit `docs: post-Thursday decisions from 14 Aug dev call` (Aug 16, 2026, 09:26 UTC).

All numbers below come from git's own metadata: `git log`, `git shortlog`, `git blame`, and file-by-file line counts. Not from a self-report.

## Headline numbers

| Metric | Eyal Gever | Bob Dougherty |
|---|---|---|
| Author emails | eyal@eyalgever.com + eyalgever@gmail.com | robert.f.dougherty@gmail.com |
| Total commits | 117 of 118 (99.2%) | 1 of 118 (0.8%) |
| Lines added across history | 44,637 | 1,471 |
| Lines deleted across history | 4,172 | 70 |
| Distinct files touched | 172 (across both emails) | 15 |
| First commit | July 9, 2026 (Initial release v1.0.0) | Aug 2, 2026 |
| Most recent commit | Aug 16, 2026 | Aug 2, 2026 |

## Repository shape

Total files (working tree, excluding `.git`): **167**

- 58 JavaScript files
- 42 PNG assets
- 28 Markdown documents
- 13 JPG assets
- 9 CSS stylesheets
- 7 GLSL shader files
- 3 HTML files
- 1 PDF, 1 webmanifest, 1 gitignore, 1 mjs

Total lines of code (js, css, glsl, html, mjs): **37,263**  
Total lines of documentation (md): **3,746**  
Total commits: **118**  
Development window: July 9 - August 16, 2026 (**~40 calendar days**)

## Bob Dougherty's single commit

Commit `131489d`, Aug 2, 2026, 15:31 -0700, message "Muse device integration working; needs validation".

Diff: 1,471 insertions / 70 deletions across 15 files.

Files Bob authored or heavily modified in that commit:

- `src/muse/muse-bands.js` (created, 318 lines)
- `src/muse/muse-ble.js` (created, 253 lines)
- `src/muse/muse-brainwaves.js` (created, 25 lines added; file is now 264 lines)
- `src/muse/muse-live-adapter.js` (created, 392 lines)
- `src/muse/muse-quality-dots.js` (created, 69 lines)
- `src/muse/muse-source.js` (modified, +90/-... on Eyal's earlier scaffold)
- `src/muse/README.md` (edited, +65 lines)
- `src/app.js` (edited, +159 lines — added Muse wiring into the orchestrator)
- `ARCHITECTURE.md`, `INTEGRATION.md`, `README.md`, `docs/PORTING-GUIDE.md`, `index.html`, `src/after/summary-playback.js`, `styles/v163.css` (small edits)

**Bob's contribution is real and specific: the low-level Muse BLE integration.** It is not a full app; it is the sensor-to-adapter layer.

## Per-file authorship (major files)

Top 30 files by size, with the author who has the plurality of commits touching each file per `git log --format=%ae -- <file>`:

| Lines | Primary author | File |
|---|---|---|
| 2443 | Eyal | src/app.js |
| 1182 | Eyal | src/ui/v163-layer.js |
| 1089 | Eyal | src/visuals/fluid-style.js |
| 958 | Eyal | src/after/session-gallery.js |
| 920 | Eyal | src/muse/muse-log-capture.js |
| 917 | Eyal | src/visuals/tendrils-style.js |
| 861 | Eyal | src/audio/audio-reactive.js |
| 775 | Eyal | src/after/summary-playback.js |
| 737 | Eyal | src/visuals/physarum-style.js |
| 664 | Eyal | src/visuals/chapel-style.js |
| 616 | Eyal | src/visuals/skyspace-style.js |
| 584 | Eyal | src/visuals/curl-style.js |
| 546 | Eyal | src/visuals/smokering-style.js |
| 536 | Eyal | src/muse/muse-vis.js |
| 520 | Eyal | src/ui/tooltips.js |
| 508 | Eyal | src/visuals/threshold-style.js |
| 499 | Eyal | src/visuals/halo-style.js |
| 498 | Eyal | src/visuals/ember-style.js |
| 487 | Eyal | src/visuals/aurora-style.js |
| 484 | Eyal | src/ui/legal-notice.js |
| 470 | Eyal | src/visuals/drift-style.js |
| 461 | Eyal | src/ui/immersive.js |
| 448 | Eyal | src/visuals/style-carousel.js |
| 447 | Eyal | src/visuals/nerves-style.js |
| 443 | Eyal | src/visuals/filament-style.js |
| 432 | Eyal | src/fluid/fluid-engine.js |
| 423 | Eyal | src/visuals/aperture-style.js |
| 415 | Eyal | src/after/session-history.js |
| 392 | Eyal | src/muse/muse-live-adapter.js (originally Bob's; Eyal has more commits on it since) |
| 355 | Eyal | src/ui/style-picker-popover.js |

**Every file in the top 30 by size is Eyal-authored.**

## src/muse/ subdirectory breakdown

The Muse integration is the one place Bob has authored anything at all. Even inside `src/muse/`, only 4 of 11 files are primarily Bob's:

| Lines | Primary author | File |
|---|---|---|
| 153 | Eyal | src/muse/log-story.js |
| 318 | **Bob** | src/muse/muse-bands.js |
| 253 | **Bob** | src/muse/muse-ble.js |
| 264 | **Bob** | src/muse/muse-brainwaves.js |
| 392 | Eyal | src/muse/muse-live-adapter.js (Bob's initial commit, subsequent history Eyal) |
| 920 | Eyal | src/muse/muse-log-capture.js |
| 69 | **Bob** | src/muse/muse-quality-dots.js |
| 351 | Eyal | src/muse/muse-source.js |
| 536 | Eyal | src/muse/muse-vis.js |
| 262 | Eyal | src/muse/muse-wizard.js |
| 132 | Eyal | src/muse/sim-scenarios.js |

Muse folder total: 3,650 lines. Bob's four files sum to **904 lines** (24.8% of the Muse folder). Eyal wrote the wizard, source orchestration, live visualization, log capture, story translation, and simulation scenarios that make the sensor data drive the art.

## Visual worlds (src/visuals/)

All 16 art-style modules are Eyal-authored:

| Lines | Primary author | Style |
|---|---|---|
| 1089 | Eyal | fluid-style.js |
| 917 | Eyal | tendrils-style.js |
| 737 | Eyal | physarum-style.js |
| 664 | Eyal | chapel-style.js |
| 616 | Eyal | skyspace-style.js |
| 584 | Eyal | curl-style.js |
| 546 | Eyal | smokering-style.js |
| 508 | Eyal | threshold-style.js |
| 499 | Eyal | halo-style.js |
| 498 | Eyal | ember-style.js |
| 487 | Eyal | aurora-style.js |
| 470 | Eyal | drift-style.js |
| 447 | Eyal | nerves-style.js |
| 443 | Eyal | filament-style.js |
| 423 | Eyal | aperture-style.js |
| 448 | Eyal | style-carousel.js (chooser) |
| 89 | Eyal | visual-style.js (base) |
| 62 | Eyal | index.js |
| 61 | Eyal | current-style.js |

Visuals folder total: **9,588 lines**, 100% Eyal.

The fluid engine (`src/fluid/`) is 432 JS lines + 574 lines of GLSL shaders (advection, divergence, gradient, pressure, splat, display, fullscreen vertex). All Eyal.

## Docs and design system

- `ARCHITECTURE.md` (15,519 chars), `INTEGRATION.md` (36,352 chars), `README.md` (43,105 chars), `RELEASE-NOTES-v1.6.4.md`, `docs/PORTING-GUIDE.md` (26,830 chars), `docs/POST-THURSDAY-DECISIONS.md` (9,165 chars), `docs/UX-INVARIANTS.md` (12,163 chars), `ARTWORK-LICENSE.md`, `CONTRIBUTING.md`, `NOTICE.md`, `THIRD-PARTY-NOTICES.md`, `CHANGELOG.md` — all Eyal-authored.
- Styles: 9,909 lines of CSS across `styles/` — all Eyal.

## What this evidence supports

- Empathic Art is **overwhelmingly a single-author codebase.** 99.2% of commits, ~97% of lines added, and every top-30 file are Eyal's.
- Bob's Aug 2 commit is the Muse BLE plumbing (roughly 900 net lines of the 3,650-line Muse folder). Everything Muse-facing downstream — the source orchestration, wizard, live visualization, log capture, session replay — is Eyal.
- Jacob has zero commits in this repository. His C++ integration work lives in a separate iOS codebase.
- All 16 art-style modules, the fluid engine and its shaders, the UI, the audio-reactive layer, the session gallery and summary playback, the store, the voice recorder, the debug tooling, and every top-level doc are Eyal.
- The claim that "Bob and Jacob are doing all their work for equity" (George, Aug 28 WhatsApp) is factually accurate about their arrangement but does not describe comparable output. In the shared repo, Bob's contribution is one commit; Jacob's is zero. Eyal's is 117.

## Development velocity

- **Repo start:** July 9, 2026 (v1.0.0)
- **Latest commit:** Aug 16, 2026 (v1.6.4 shipped Aug 15)
- **Elapsed:** 39 days
- **Commits in that window:** 118 (77 in July, 41 in August)
- **Net lines shipped:** 44,637 + 1,471 - 4,172 - 70 = **~41,866 net new lines** across 40 days

That is production output on the order of what a dedicated senior full-stack engineer would ship in a 6-8 week sprint, delivered by one person while also directing the art, running the calls, and holding the vision.

## Files in this evidence folder

- `authorship-analysis.md` — this document
- Raw git output is not archived here; the repo itself lives at `/home/user/workspace/empathic-art-repo/` and can be re-analyzed at any time.
