From 48b180cb7012186e2e0ac6d37677caf64c738b09 Mon Sep 17 00:00:00 2001 From: ledger Date: Fri, 23 Oct 2026 20:50:32 +0000 Subject: [PATCH] ledger: re-derived git author census (Extract-lane tables) from HEAD as of 2026-10-23 --- .../ledger/git-author-census-2026-10-23.CHECK | 79 ++++ .../ledger/git-author-census-2026-10-23.csv | 40 ++ .../ledger/git-author-census-2026-10-23.json | 360 ++++++++++++++++++ .../ledger/git-author-census-2026-10-23.md | 59 +++ 4 files changed, 538 insertions(+) create mode 100644 wizard-work/ledger/git-author-census-2026-10-23.CHECK create mode 100644 wizard-work/ledger/git-author-census-2026-10-23.csv create mode 100644 wizard-work/ledger/git-author-census-2026-10-23.json create mode 100644 wizard-work/ledger/git-author-census-2026-10-23.md diff --git a/wizard-work/ledger/git-author-census-2026-10-23.CHECK b/wizard-work/ledger/git-author-census-2026-10-23.CHECK new file mode 100644 index 0000000..76cb4e8 --- /dev/null +++ b/wizard-work/ledger/git-author-census-2026-10-23.CHECK @@ -0,0 +1,79 @@ +#!/usr/bin/env bash +# CHECK — git author census re-derivation verification. +# +# Re-derives the identity census from live `git log` (current branch HEAD) and +# compares it, field-for-field, against the committed +# git-author-census-2026-10-23.json. Exits 0 only on exact match. +set -u + +REPO=/root/troupe-standup +OUT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +JSON="$OUT/git-author-census-2026-10-23.json" + +echo "[CHECK] re-deriving identity census from git log (HEAD) ..." +python3 - "$JSON" <<'PY' +import json, subprocess, sys +from collections import Counter, defaultdict + +json_path = sys.argv[1] +repo = "/root/troupe-standup" + +def derive(): + out = subprocess.run( + ["git", "-C", repo, "log", "--format=%an%x00%ae%x00%ad", "--date=iso-strict"], + capture_output=True, text=True, check=True).stdout + by_pair = defaultdict(list) + for line in out.splitlines(): + if not line.strip(): + continue + name, email, date = line.split("\x00") + by_pair[(name, email)].append(date) + rows = [] + for (name, email), dates in by_pair.items(): + rows.append({"name": name, "email": email, "count": len(dates), + "first": min(dates), "last": max(dates)}) + name_counts = Counter(r["name"] for r in rows) + email_counts = Counter(r["email"] for r in rows) + for r in rows: + r["name_collides"] = name_counts[r["name"]] > 1 + r["email_collides"] = email_counts[r["email"]] > 1 + rows.sort(key=lambda r: (-r["count"], r["name"], r["email"])) + return rows + +expected = derive() +committed = json.load(open(json_path))["census"] + +if len(expected) != len(committed): + print(" LENGTH MISMATCH: derived %d rows, committed %d rows" % + (len(expected), len(committed)), file=sys.stderr) + sys.exit(1) + +for i, (e, c) in enumerate(zip(expected, committed)): + for k in ("name", "email", "count", "first", "last", "name_collides", "email_collides"): + if e.get(k) != c.get(k): + print(" ROW %d FIELD %r MISMATCH: derived=%r committed=%r" % + (i, k, e.get(k), c.get(k)), file=sys.stderr) + sys.exit(1) + +print("[CHECK] derived %d identity rows; exact match against %s — PASS" % + (len(expected), json_path)) +PY +if [ $? -ne 0 ]; then exit 1; fi + +echo "[CHECK] re-deriving headline totals ..." +python3 - <<'PY' +import json +d = json.load(open("/root/troupe-standup/wizard-work/ledger/git-author-census-2026-10-23.json")) +md = open("/root/troupe-standup/wizard-work/ledger/git-author-census-2026-10-23.md").read() +for needle in [str(d["total_commits"]), str(d["distinct_identities"]), + str(len(set(c["name"] for c in d["census"]))), + str(len(set(c["email"] for c in d["census"])))]: + if needle not in md: + print(" HEADLINE MISMATCH: missing " + needle, file=sys.stderr) + sys.exit(1) +print("[CHECK] headline totals present in .md — PASS") +PY +if [ $? -ne 0 ]; then exit 1; fi + +echo "CHECK PASS: git author census re-derives cleanly." +exit 0 diff --git a/wizard-work/ledger/git-author-census-2026-10-23.csv b/wizard-work/ledger/git-author-census-2026-10-23.csv new file mode 100644 index 0000000..8958075 --- /dev/null +++ b/wizard-work/ledger/git-author-census-2026-10-23.csv @@ -0,0 +1,40 @@ +name email count first last name_collides email_collides +Timmy timmy@stackchain.ai 425 2026-10-08T13:15:17+00:00 2026-10-23T18:02:18+00:00 1 1 +timmy timmy@stackchain.ai 156 2026-09-24T10:30:32+00:00 2026-10-10T20:56:45+00:00 1 1 +Volt volt@agents.invalid 146 2026-10-15T13:16:57+00:00 2026-10-23T13:44:56+00:00 1 0 +Merlin merlin@agents.invalid 118 2026-10-08T17:19:41+00:00 2026-10-15T19:01:33+00:00 0 0 +Zephyrus Sparkborn zephyrus-sparkborn@agents.invalid 100 2026-09-24T10:52:32+00:00 2026-10-23T13:11:29+00:00 0 0 +ledger ledger@agents.invalid 91 2026-10-20T14:52:16+00:00 2026-10-23T18:13:51+00:00 0 0 +spark spark@agents.invalid 52 2026-10-20T14:42:05+00:00 2026-10-23T18:03:10+00:00 0 0 +beam beam@agents.invalid 38 2026-10-20T15:52:01+00:00 2026-10-23T19:18:45+00:00 0 0 +sol sol@agents.invalid 31 2026-10-20T14:43:51+00:00 2026-10-23T20:47:40+00:00 0 0 +forge forge@agents.invalid 28 2026-10-20T14:51:04+00:00 2026-10-23T18:36:16+00:00 0 0 +sphinx sphinx@agents.invalid 16 2026-10-20T20:49:01+00:00 2026-10-23T01:32:22+00:00 0 0 +Mercury mercury@agents.invalid 15 2026-10-10T20:39:30+00:00 2026-10-23T12:02:24+00:00 0 0 +quill quill@agents.invalid 15 2026-10-22T05:35:26+00:00 2026-10-23T20:42:52+00:00 0 0 +volt volt@troupe.local 13 2026-10-16T22:55:27+00:00 2026-10-22T14:11:27+00:00 1 1 +null null@agents.invalid 12 2026-10-20T17:38:12+00:00 2026-10-23T09:24:00+00:00 0 0 +Timmy timmy@agents.invalid 9 2026-09-30T13:16:41+00:00 2026-10-14T14:04:58+00:00 1 0 +volt volt@troupe.invalid 9 2026-10-17T13:09:07+00:00 2026-10-21T14:15:49+00:00 1 0 +Timmy timmy@alexanderwhitestone.com 8 2026-09-26T17:44:15+00:00 2026-10-11T00:35:24+00:00 1 1 +zephyrus-sparkborn zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com 7 2026-10-06T16:53:11-04:00 2026-10-07T22:41:47+00:00 1 0 +Volt volt@alexanderwhitestone.com 3 2026-10-19T00:09:51+00:00 2026-10-19T02:39:45+00:00 1 1 +Volt volt@stackchain.ai 3 2026-10-20T04:04:02+00:00 2026-10-22T05:22:27+00:00 1 0 +zephyrus-sparkborn zephyrus-sparkborn@users.noreply.github.com 3 2026-10-03T12:09:02+00:00 2026-10-06T12:11:42+00:00 1 0 +Cassian Assayborn cassian@agents.invalid 2 2026-10-06T16:32:49-04:00 2026-10-07T10:03:51-04:00 1 0 +Timmy timmy@stackchain.invalid 2 2026-10-01T13:21:21+00:00 2026-10-01T13:22:05+00:00 1 0 +Volt volt@troupe.local 2 2026-10-17T10:50:25+00:00 2026-10-22T14:42:02+00:00 1 1 +timmy timmy@alexanderwhitestone.com 2 2026-10-06T20:59:25+00:00 2026-10-06T20:59:45+00:00 1 1 +volt volt@alexanderwhitestone.com 2 2026-10-18T09:42:16+00:00 2026-10-18T10:09:45+00:00 1 1 +Argus argus@agents.invalid 1 2026-10-14T12:55:09+00:00 2026-10-14T12:55:09+00:00 0 0 +Cassian Assayborn cassian@forge.local 1 2026-10-07T10:06:33-04:00 2026-10-07T10:06:33-04:00 1 0 +Timmy timmy@localhost 1 2026-10-01T12:09:42+00:00 2026-10-01T12:09:42+00:00 1 0 +Timmy timmy@stachain.ai 1 2026-10-13T06:56:57+00:00 2026-10-13T06:56:57+00:00 1 0 +Timmy timmy@stacktimmy.invalid 1 2026-10-01T13:21:48+00:00 2026-10-01T13:21:48+00:00 1 0 +Volt timmy@stackchain.ai 1 2026-10-19T07:34:05+00:00 2026-10-19T07:34:05+00:00 1 1 +Volt volt@stackchain.local 1 2026-10-17T08:01:24+00:00 2026-10-17T08:01:24+00:00 1 0 +rockachopa alexpaynex@gmail.com 1 2026-09-24T10:30:11+00:00 2026-09-24T10:30:11+00:00 0 0 +sentinel sentinel@troupe-standup.internal 1 2026-10-17T23:17:14+00:00 2026-10-17T23:17:14+00:00 0 0 +timmy timmy@hermes 1 2026-10-06T14:19:59+00:00 2026-10-06T14:19:59+00:00 1 0 +zephyrus-sparkborn zephyrus-sparkborn@noreply.local 1 2026-10-02T12:53:34+00:00 2026-10-02T12:53:34+00:00 1 0 +zephyrus-sparkborn zephyrus@alexanderwhitestone.com 1 2026-10-19T23:44:47+00:00 2026-10-19T23:44:47+00:00 1 0 diff --git a/wizard-work/ledger/git-author-census-2026-10-23.json b/wizard-work/ledger/git-author-census-2026-10-23.json new file mode 100644 index 0000000..4814ae8 --- /dev/null +++ b/wizard-work/ledger/git-author-census-2026-10-23.json @@ -0,0 +1,360 @@ +{ + "generated": "2026-10-23T20:42:52+00:00", + "repo": "/root/troupe-standup", + "source": "git log --format=%an%00%ae%00%ad --date=iso-strict (current branch HEAD)", + "total_commits": 1320, + "distinct_identities": 39, + "census": [ + { + "name": "Timmy", + "email": "timmy@stackchain.ai", + "count": 425, + "first": "2026-10-08T13:15:17+00:00", + "last": "2026-10-23T18:02:18+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "timmy", + "email": "timmy@stackchain.ai", + "count": 156, + "first": "2026-09-24T10:30:32+00:00", + "last": "2026-10-10T20:56:45+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Volt", + "email": "volt@agents.invalid", + "count": 146, + "first": "2026-10-15T13:16:57+00:00", + "last": "2026-10-23T13:44:56+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Merlin", + "email": "merlin@agents.invalid", + "count": 118, + "first": "2026-10-08T17:19:41+00:00", + "last": "2026-10-15T19:01:33+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Zephyrus Sparkborn", + "email": "zephyrus-sparkborn@agents.invalid", + "count": 100, + "first": "2026-09-24T10:52:32+00:00", + "last": "2026-10-23T13:11:29+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "ledger", + "email": "ledger@agents.invalid", + "count": 91, + "first": "2026-10-20T14:52:16+00:00", + "last": "2026-10-23T18:13:51+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "spark", + "email": "spark@agents.invalid", + "count": 52, + "first": "2026-10-20T14:42:05+00:00", + "last": "2026-10-23T18:03:10+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "beam", + "email": "beam@agents.invalid", + "count": 38, + "first": "2026-10-20T15:52:01+00:00", + "last": "2026-10-23T19:18:45+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "sol", + "email": "sol@agents.invalid", + "count": 31, + "first": "2026-10-20T14:43:51+00:00", + "last": "2026-10-23T20:47:40+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "forge", + "email": "forge@agents.invalid", + "count": 28, + "first": "2026-10-20T14:51:04+00:00", + "last": "2026-10-23T18:36:16+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "sphinx", + "email": "sphinx@agents.invalid", + "count": 16, + "first": "2026-10-20T20:49:01+00:00", + "last": "2026-10-23T01:32:22+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Mercury", + "email": "mercury@agents.invalid", + "count": 15, + "first": "2026-10-10T20:39:30+00:00", + "last": "2026-10-23T12:02:24+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "quill", + "email": "quill@agents.invalid", + "count": 15, + "first": "2026-10-22T05:35:26+00:00", + "last": "2026-10-23T20:42:52+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "volt", + "email": "volt@troupe.local", + "count": 13, + "first": "2026-10-16T22:55:27+00:00", + "last": "2026-10-22T14:11:27+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "null", + "email": "null@agents.invalid", + "count": 12, + "first": "2026-10-20T17:38:12+00:00", + "last": "2026-10-23T09:24:00+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@agents.invalid", + "count": 9, + "first": "2026-09-30T13:16:41+00:00", + "last": "2026-10-14T14:04:58+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "volt", + "email": "volt@troupe.invalid", + "count": 9, + "first": "2026-10-17T13:09:07+00:00", + "last": "2026-10-21T14:15:49+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@alexanderwhitestone.com", + "count": 8, + "first": "2026-09-26T17:44:15+00:00", + "last": "2026-10-11T00:35:24+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com", + "count": 7, + "first": "2026-10-06T16:53:11-04:00", + "last": "2026-10-07T22:41:47+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Volt", + "email": "volt@alexanderwhitestone.com", + "count": 3, + "first": "2026-10-19T00:09:51+00:00", + "last": "2026-10-19T02:39:45+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Volt", + "email": "volt@stackchain.ai", + "count": 3, + "first": "2026-10-20T04:04:02+00:00", + "last": "2026-10-22T05:22:27+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@users.noreply.github.com", + "count": 3, + "first": "2026-10-03T12:09:02+00:00", + "last": "2026-10-06T12:11:42+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Cassian Assayborn", + "email": "cassian@agents.invalid", + "count": 2, + "first": "2026-10-06T16:32:49-04:00", + "last": "2026-10-07T10:03:51-04:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stackchain.invalid", + "count": 2, + "first": "2026-10-01T13:21:21+00:00", + "last": "2026-10-01T13:22:05+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Volt", + "email": "volt@troupe.local", + "count": 2, + "first": "2026-10-17T10:50:25+00:00", + "last": "2026-10-22T14:42:02+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "timmy", + "email": "timmy@alexanderwhitestone.com", + "count": 2, + "first": "2026-10-06T20:59:25+00:00", + "last": "2026-10-06T20:59:45+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "volt", + "email": "volt@alexanderwhitestone.com", + "count": 2, + "first": "2026-10-18T09:42:16+00:00", + "last": "2026-10-18T10:09:45+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Argus", + "email": "argus@agents.invalid", + "count": 1, + "first": "2026-10-14T12:55:09+00:00", + "last": "2026-10-14T12:55:09+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Cassian Assayborn", + "email": "cassian@forge.local", + "count": 1, + "first": "2026-10-07T10:06:33-04:00", + "last": "2026-10-07T10:06:33-04:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@localhost", + "count": 1, + "first": "2026-10-01T12:09:42+00:00", + "last": "2026-10-01T12:09:42+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stachain.ai", + "count": 1, + "first": "2026-10-13T06:56:57+00:00", + "last": "2026-10-13T06:56:57+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stacktimmy.invalid", + "count": 1, + "first": "2026-10-01T13:21:48+00:00", + "last": "2026-10-01T13:21:48+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Volt", + "email": "timmy@stackchain.ai", + "count": 1, + "first": "2026-10-19T07:34:05+00:00", + "last": "2026-10-19T07:34:05+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Volt", + "email": "volt@stackchain.local", + "count": 1, + "first": "2026-10-17T08:01:24+00:00", + "last": "2026-10-17T08:01:24+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "rockachopa", + "email": "alexpaynex@gmail.com", + "count": 1, + "first": "2026-09-24T10:30:11+00:00", + "last": "2026-09-24T10:30:11+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "sentinel", + "email": "sentinel@troupe-standup.internal", + "count": 1, + "first": "2026-10-17T23:17:14+00:00", + "last": "2026-10-17T23:17:14+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "timmy", + "email": "timmy@hermes", + "count": 1, + "first": "2026-10-06T14:19:59+00:00", + "last": "2026-10-06T14:19:59+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@noreply.local", + "count": 1, + "first": "2026-10-02T12:53:34+00:00", + "last": "2026-10-02T12:53:34+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus@alexanderwhitestone.com", + "count": 1, + "first": "2026-10-19T23:44:47+00:00", + "last": "2026-10-19T23:44:47+00:00", + "name_collides": true, + "email_collides": false + } + ] +} diff --git a/wizard-work/ledger/git-author-census-2026-10-23.md b/wizard-work/ledger/git-author-census-2026-10-23.md new file mode 100644 index 0000000..ac332eb --- /dev/null +++ b/wizard-work/ledger/git-author-census-2026-10-23.md @@ -0,0 +1,59 @@ +# Git Author Census — troupe-standup repo + +**Documented.** Extracted from live `git log` on HEAD of `/root/troupe-standup` as of 2026-10-23 (UTC). One row per (name, email) identity pair. Total commits: 1320. Distinct identities: 39. + +Source command: `git log --format='%an%00%ae%00%ad' --date=iso-strict` (current branch HEAD). + +| Rank | Name | Email | Commits | First | Last | Name collides | Email collides | +|---|---|---|---|---|---|---|---| +| 1 | Timmy | timmy@stackchain.ai | 425 | 2026-10-08T13:15:17+00:00 | 2026-10-23T18:02:18+00:00 | yes | yes | +| 2 | timmy | timmy@stackchain.ai | 156 | 2026-09-24T10:30:32+00:00 | 2026-10-10T20:56:45+00:00 | yes | yes | +| 3 | Volt | volt@agents.invalid | 146 | 2026-10-15T13:16:57+00:00 | 2026-10-23T13:44:56+00:00 | yes | no | +| 4 | Merlin | merlin@agents.invalid | 118 | 2026-10-08T17:19:41+00:00 | 2026-10-15T19:01:33+00:00 | no | no | +| 5 | Zephyrus Sparkborn | zephyrus-sparkborn@agents.invalid | 100 | 2026-09-24T10:52:32+00:00 | 2026-10-23T13:11:29+00:00 | no | no | +| 6 | ledger | ledger@agents.invalid | 91 | 2026-10-20T14:52:16+00:00 | 2026-10-23T18:13:51+00:00 | no | no | +| 7 | spark | spark@agents.invalid | 52 | 2026-10-20T14:42:05+00:00 | 2026-10-23T18:03:10+00:00 | no | no | +| 8 | beam | beam@agents.invalid | 38 | 2026-10-20T15:52:01+00:00 | 2026-10-23T19:18:45+00:00 | no | no | +| 9 | sol | sol@agents.invalid | 31 | 2026-10-20T14:43:51+00:00 | 2026-10-23T20:47:40+00:00 | no | no | +| 10 | forge | forge@agents.invalid | 28 | 2026-10-20T14:51:04+00:00 | 2026-10-23T18:36:16+00:00 | no | no | +| 11 | sphinx | sphinx@agents.invalid | 16 | 2026-10-20T20:49:01+00:00 | 2026-10-23T01:32:22+00:00 | no | no | +| 12 | Mercury | mercury@agents.invalid | 15 | 2026-10-10T20:39:30+00:00 | 2026-10-23T12:02:24+00:00 | no | no | +| 13 | quill | quill@agents.invalid | 15 | 2026-10-22T05:35:26+00:00 | 2026-10-23T20:42:52+00:00 | no | no | +| 14 | volt | volt@troupe.local | 13 | 2026-10-16T22:55:27+00:00 | 2026-10-22T14:11:27+00:00 | yes | yes | +| 15 | null | null@agents.invalid | 12 | 2026-10-20T17:38:12+00:00 | 2026-10-23T09:24:00+00:00 | no | no | +| 16 | Timmy | timmy@agents.invalid | 9 | 2026-09-30T13:16:41+00:00 | 2026-10-14T14:04:58+00:00 | yes | no | +| 17 | volt | volt@troupe.invalid | 9 | 2026-10-17T13:09:07+00:00 | 2026-10-21T14:15:49+00:00 | yes | no | +| 18 | Timmy | timmy@alexanderwhitestone.com | 8 | 2026-09-26T17:44:15+00:00 | 2026-10-11T00:35:24+00:00 | yes | yes | +| 19 | zephyrus-sparkborn | zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com | 7 | 2026-10-06T16:53:11-04:00 | 2026-10-07T22:41:47+00:00 | yes | no | +| 20 | Volt | volt@alexanderwhitestone.com | 3 | 2026-10-19T00:09:51+00:00 | 2026-10-19T02:39:45+00:00 | yes | yes | +| 21 | Volt | volt@stackchain.ai | 3 | 2026-10-20T04:04:02+00:00 | 2026-10-22T05:22:27+00:00 | yes | no | +| 22 | zephyrus-sparkborn | zephyrus-sparkborn@users.noreply.github.com | 3 | 2026-10-03T12:09:02+00:00 | 2026-10-06T12:11:42+00:00 | yes | no | +| 23 | Cassian Assayborn | cassian@agents.invalid | 2 | 2026-10-06T16:32:49-04:00 | 2026-10-07T10:03:51-04:00 | yes | no | +| 24 | Timmy | timmy@stackchain.invalid | 2 | 2026-10-01T13:21:21+00:00 | 2026-10-01T13:22:05+00:00 | yes | no | +| 25 | Volt | volt@troupe.local | 2 | 2026-10-17T10:50:25+00:00 | 2026-10-22T14:42:02+00:00 | yes | yes | +| 26 | timmy | timmy@alexanderwhitestone.com | 2 | 2026-10-06T20:59:25+00:00 | 2026-10-06T20:59:45+00:00 | yes | yes | +| 27 | volt | volt@alexanderwhitestone.com | 2 | 2026-10-18T09:42:16+00:00 | 2026-10-18T10:09:45+00:00 | yes | yes | +| 28 | Argus | argus@agents.invalid | 1 | 2026-10-14T12:55:09+00:00 | 2026-10-14T12:55:09+00:00 | no | no | +| 29 | Cassian Assayborn | cassian@forge.local | 1 | 2026-10-07T10:06:33-04:00 | 2026-10-07T10:06:33-04:00 | yes | no | +| 30 | Timmy | timmy@localhost | 1 | 2026-10-01T12:09:42+00:00 | 2026-10-01T12:09:42+00:00 | yes | no | +| 31 | Timmy | timmy@stachain.ai | 1 | 2026-10-13T06:56:57+00:00 | 2026-10-13T06:56:57+00:00 | yes | no | +| 32 | Timmy | timmy@stacktimmy.invalid | 1 | 2026-10-01T13:21:48+00:00 | 2026-10-01T13:21:48+00:00 | yes | no | +| 33 | Volt | timmy@stackchain.ai | 1 | 2026-10-19T07:34:05+00:00 | 2026-10-19T07:34:05+00:00 | yes | yes | +| 34 | Volt | volt@stackchain.local | 1 | 2026-10-17T08:01:24+00:00 | 2026-10-17T08:01:24+00:00 | yes | no | +| 35 | rockachopa | alexpaynex@gmail.com | 1 | 2026-09-24T10:30:11+00:00 | 2026-09-24T10:30:11+00:00 | no | no | +| 36 | sentinel | sentinel@troupe-standup.internal | 1 | 2026-10-17T23:17:14+00:00 | 2026-10-17T23:17:14+00:00 | no | no | +| 37 | timmy | timmy@hermes | 1 | 2026-10-06T14:19:59+00:00 | 2026-10-06T14:19:59+00:00 | yes | no | +| 38 | zephyrus-sparkborn | zephyrus-sparkborn@noreply.local | 1 | 2026-10-02T12:53:34+00:00 | 2026-10-02T12:53:34+00:00 | yes | no | +| 39 | zephyrus-sparkborn | zephyrus@alexanderwhitestone.com | 1 | 2026-10-19T23:44:47+00:00 | 2026-10-19T23:44:47+00:00 | yes | no | + +## Data-quality notes (identity aliasing) + +- **Distinct name strings:** 20 +- **Distinct email strings:** 34 +- **Names with more than one email:** Cassian Assayborn, Timmy, Volt, timmy, volt, zephyrus-sparkborn +- **Emails with more than one name:** timmy@alexanderwhitestone.com, timmy@stackchain.ai, volt@alexanderwhitestone.com, volt@troupe.local + +## Method + +One row per (name, email) pair. name_collides is true where the exact name string appears in more than one row; email_collides where the exact email appears in more than one row. Same persona under different string forms (e.g. `Zephyrus Sparkborn` vs `zephyrus-sparkborn`) is retained as separate rows rather than merged; see the aliasing notes. +