Skip to slide 1
01 / 26
VCN #45 · Bench · 2026-07-29 · Frontier Tower F10
doors 19:00 · walkthrough 19:30

BENCH.

Write an eval for your coding agent. Stop trusting vibes, ship a number.

You do not know if your coding agent is good. You have a vibe. Tonight we replace it with a number you can defend.

WED JUL 29 Frontier Tower F10 Doors 19:00 Walkthrough 19:30 Build 20:15

$10 early · $20 door · Frontier Tower members free

The night
01 / 05

Three hours, four blocks.

19:30 20:15 20:45 21:30 Walkthrough Assemble Harness Leaderboard what an eval is tasks from YOUR repo oracles, then k runs your real numbers, demos

By 22:00 you have a bench that scores any coding agent on your own repo. Not a tutorial you followed. A measuring stick you keep.

Schedule, illustrative

Provision
do it now, not at 20:15

Do this now, while I talk

Your ticket includes two things. Claim both.

The agent under test

z.ai (GLM) + Claude Code

immersivecommons.com/zai-keys

  • Free Immersive Commons account, then request a workshop key.
  • Ray approves in waves. Request early, paste later.
  • Key is good for 5 hours from approval.
  • Multiple GLM models on one key. Default glm-4.6.
QR code to immersivecommons.com/zai-keys

scan for keys

The lab compute

Nebius Token Factory

dev.nebius.com/builders

  • Join the Nebius Builder Program.
  • $50 Token Factory, $50 AI Cloud, $25 Tavily.
  • Verify email, then mint a Token Factory API key.
  • This is your fallback if your laptop cannot host a model.
QR code to dev.nebius.com/builders

scan for credits

If you do one thing in the next five minutes, do the z.ai request. It needs a human approval, so it has the longest lead time. Nebius is instant and self-serve.

Partners
02 / 05

Who makes tonight run.

Frontier TowerThe building. Floor 10 Annex, 995 Market St.
Immersive CommonsThe floor, and the workshop key provisioning.
z.aiGLM model access for the session. The agent we put on the bench.
NebiusToken Factory credits for the labs.
Hacker BobCo-host. Michalis Vasileiadis.
AI GeneticistCo-host. Eric Mockler.
Learning Layer LabsCo-host. Devinder Sodhi.
FacilitatorRayyan Zahid, Immersive Commons.

z.ai and Nebius back every night of the Off the Leash season, #41 through #50. That is why the perks are on the ticket rather than announced per event.

The category
03 / 05

Managed eval platforms exist. We are not using one.

What they give you

  • Hosted task datasets and versioning.
  • Run tracking, so you can diff last week against today.
  • Scoring dashboards and regression gates in CI.
  • Somewhere to put results that is not a JSON file on your laptop.

Why you write it yourself first

You own the primitive. When a managed platform later tells you a number, you know exactly what it did to get it, because you built the same thing by hand.

Tonight is 90 minutes. A harness is about 60 lines. Buy the dashboard later if you want it.

Setup
pick your tab, top right of the block

Same three steps. Four correct spellings.

Node 18 or newer, then Claude Code, then point it at the workshop gateway with the key you just requested. Pick your platform once and every command block in this deck follows you.

# 1. Node 18+ (installer from nodejs.org works on Apple Silicon and Intel)
node -v                 # want v18 or higher

# 2. Claude Code
npm install -g @anthropic-ai/claude-code

# 3. Point it at the workshop gateway (paste your approved key)
export ANTHROPIC_BASE_URL=https://immersivecommons13.tail5da903.ts.net
export ANTHROPIC_AUTH_TOKEN=agt_your_key_here
export ANTHROPIC_MODEL=glm-4.6
export ANTHROPIC_SMALL_FAST_MODEL=glm-4.5-air

claude                  # you are live
# 1. Node 18+. Do NOT trust `apt install nodejs` on older LTS, it ships v12.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v                 # want v18 or higher

# 2. Claude Code
sudo npm install -g @anthropic-ai/claude-code

# 3. Point it at the workshop gateway (paste your approved key)
export ANTHROPIC_BASE_URL=https://immersivecommons13.tail5da903.ts.net
export ANTHROPIC_AUTH_TOKEN=agt_your_key_here
export ANTHROPIC_MODEL=glm-4.6
export ANTHROPIC_SMALL_FAST_MODEL=glm-4.5-air

claude                  # you are live
# PowerShell. NOTE: `export` does not exist here, use $env: instead.
# 1. Node 18+ (installer from nodejs.org)
node -v                 # want v18 or higher

# 2. Claude Code
npm install -g @anthropic-ai/claude-code

# 3. Point it at the workshop gateway (paste your approved key)
$env:ANTHROPIC_BASE_URL = "https://immersivecommons13.tail5da903.ts.net"
$env:ANTHROPIC_AUTH_TOKEN = "agt_your_key_here"
$env:ANTHROPIC_MODEL = "glm-4.6"
$env:ANTHROPIC_SMALL_FAST_MODEL = "glm-4.5-air"

claude                  # you are live

# Prefer bash? Git Bash takes the macOS/Linux block verbatim.
# Chaining: `&&` fails in PowerShell 5.1. Use `;` or `cmd1; if ($?) { cmd2 }`.
# ChromeOS runs this in the Linux container (Crostini). Turn it on first:
#   Settings -> Advanced -> Developers -> Linux development environment -> On
# Then open Terminal. Inside, you are on Debian, so this is the Linux path.

sudo apt update
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v                 # want v18 or higher

sudo npm install -g @anthropic-ai/claude-code

export ANTHROPIC_BASE_URL=https://immersivecommons13.tail5da903.ts.net
export ANTHROPIC_AUTH_TOKEN=agt_your_key_here
export ANTHROPIC_MODEL=glm-4.6
export ANTHROPIC_SMALL_FAST_MODEL=glm-4.5-air

claude                  # you are live

# Low on RAM? Do not try to host a model locally. Use the Nebius
# hosted fallback from slide 3. That is what the credits are for.

Windows PowerShell has no export. Use $env:X = "Y", or run the block in Git Bash.

ChromeOS is Debian once Crostini is on. Everything Linux applies after that.

Any OS environment variables are per window. Run claude in the SAME window you exported in.

Editing .sh on Windows save as LF, not CRLF, or bash says bad interpreter.

If your tab runs clean, you are ready. If not, hand up now. We fix setup during the walkthrough, not during the lab.

The problem
01 / 03

"It feels solid" is not a number.

Everyone ships an agent and says it feels solid. Nobody can state its pass rate on a task it has never seen.

The problem
02 / 03

A public benchmark tells you almost nothing about YOUR repo.

050100 agent A agent B agent C public benchmark your private suite

Illustrative, not measured. The shape is the claim, not the values.

  • SWE-bench style suites tell you how an agent does on someone else's bugs.
  • Leaderboard rank is not performance on your stack, your conventions, your test suite.
  • Agent A wins in public and loses on your repo. That reordering is the whole problem.
  • The only eval that predicts your reliability runs on your tasks.
The problem
03 / 03

What it costs you to not measure.

No baseline

A regression and a bad day look identical. You cannot tell whether your last prompt change helped or hurt.

No case for autonomy

You cannot justify letting the agent run unattended to anyone, including yourself. So you supervise everything forever.

No compounding

Every improvement is a guess you cannot bank. Measurement is what turns tinkering into progress.

Concept
01 / 05

An eval is three parts and one arrow.

task agent patch oracle(test) pass/fail score

A task set

A repo state, a problem statement, and a hidden test that decides correctness. Same shape as SWE-bench, but your code.

A deterministic oracle

Per task. The thing that returns pass or fail with zero opinion. The accent box above. It is the load-bearing part.

A scoring harness

Runs the agent, applies the patch, fires the oracle, records the row. About 60 lines.

Concept
02 / 05

The oracle is a test, not an opinion.

oracle.sh, 5 runs exit 0exit 0exit 0exit 0exit 0 one verdict. reproducible. arguable by nobody. LLM judge, 5 runs 8/10"looks ok"6/10pass9/10 five verdicts. non-deterministic. game-able. the scatter IS the argument.

Illustrative

  • Exit code is the contract. 0 is pass, non-zero is fail. The runner reads nothing else.
  • pytest, a CLI exit code, a diff match. Never "ask another model if it looks right."
  • Pin it: fixed seed, no network, no clock-dependent asserts.
  • An LLM judge reintroduces exactly the vibe you came here to kill, and hides it behind a number.

If you cannot write the check as code that exits 0 or 1, it is not a task yet.

Concept
the number that matters

pass@k asks "can it ever." pass^k asks "can I leave it alone."

pass@5 = YES (at least one green) pass^5 = NO (not all green) same task, same agent, 5 attempts

1.00.50 k=1k=5k=10 pass@k = 1 - (1-p)^k pass^k = p^k your flakiness per-attempt p = 0.8, attempts assumed independent

Computed from p = 0.8. Independence is an assumption, real attempts correlate, so treat both as upper bounds.

Concept
04 / 05

Confidence comes from oracle trust, not task count.

trusted oracles noisy oracles tasks in your suite conf

Illustrative

  • Five tasks you trust beats a thousand you cannot.
  • Every task with a shaky oracle adds noise you will later mistake for agent behaviour.
  • Add a task only once you trust its oracle. Trust is proven by re-running, not by reading it.
  • A small suite you believe is a tool. A big suite you do not believe is a comfort blanket.
Replay
watch the row light up

One task, scored, end to end.

The harness takes a seeded task, hands it to the agent, applies the patch, fires the oracle, and writes one row.

Lab 1
20:15

Pull five real tasks out of your own codebase.

bench/
tasks/
001-fix-null-deref/
  prompt.md what to do
  oracle.sh decides pass/fail
  repo/ broken starting state
002-refactor-parser/
003-add-csv-export/
runner.py you write this in lab 3
results/ one json per run

Three shapes that work

bug a known fix, test currently failing.

refactor behaviour unchanged, existing tests must stay green.

feature a test you already wrote that does not pass yet.

mkdir -p bench/tasks/001-fix-null-deref bench/results
cd bench

# capture a REAL bug you already fixed: check out the broken parent
git -C /path/to/your/repo log --oneline -20      # find the fix commit
git -C /path/to/your/repo worktree add /tmp/broken <fix-sha>~1
cp -r /tmp/broken tasks/001-fix-null-deref/repo

echo "Fix the null deref in parse_header()." > tasks/001-fix-null-deref/prompt.md
mkdir -p bench/tasks/001-fix-null-deref bench/results
cd bench

# capture a REAL bug you already fixed: check out the broken parent
git -C /path/to/your/repo log --oneline -20      # find the fix commit
git -C /path/to/your/repo worktree add /tmp/broken <fix-sha>~1
cp -r /tmp/broken tasks/001-fix-null-deref/repo

echo "Fix the null deref in parse_header()." > tasks/001-fix-null-deref/prompt.md
New-Item -ItemType Directory -Force bench\tasks\001-fix-null-deref, bench\results
Set-Location bench

# capture a REAL bug you already fixed: check out the broken parent
git -C C:\path\to\your\repo log --oneline -20    # find the fix commit
git -C C:\path\to\your\repo worktree add $env:TEMP\broken <fix-sha>~1
Copy-Item -Recurse $env:TEMP\broken tasks\001-fix-null-deref\repo

Set-Content -Encoding utf8 tasks\001-fix-null-deref\prompt.md `
  "Fix the null deref in parse_header()."
# Inside the Crostini Terminal (Linux container). Same as Linux.
mkdir -p bench/tasks/001-fix-null-deref bench/results
cd bench

git -C ~/your-repo log --oneline -20             # find the fix commit
git -C ~/your-repo worktree add /tmp/broken <fix-sha>~1
cp -r /tmp/broken tasks/001-fix-null-deref/repo

echo "Fix the null deref in parse_header()." > tasks/001-fix-null-deref/prompt.md

# Your repo lives INSIDE the container. Files dragged from Downloads
# land in /mnt/chromeos, which is slow. Clone into ~ instead.
Lab 2
the load-bearing part

One oracle per task. Boringly deterministic.

Same input, same verdict, every time. Exit 0 is pass. Anything else is fail. The runner reads the exit code and nothing else.

cat > tasks/001-fix-null-deref/oracle.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/repo"
pytest tests/test_parse_header.py -q    # the ONE test that decides this task
EOF
chmod +x tasks/001-fix-null-deref/oracle.sh

# PROVE it is deterministic BEFORE you trust it: same verdict twice.
./tasks/001-fix-null-deref/oracle.sh; echo "run1=$?"
./tasks/001-fix-null-deref/oracle.sh; echo "run2=$?"
cat > tasks/001-fix-null-deref/oracle.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/repo"
pytest tests/test_parse_header.py -q    # the ONE test that decides this task
EOF
chmod +x tasks/001-fix-null-deref/oracle.sh

# PROVE it is deterministic BEFORE you trust it: same verdict twice.
./tasks/001-fix-null-deref/oracle.sh; echo "run1=$?"
./tasks/001-fix-null-deref/oracle.sh; echo "run2=$?"
# PowerShell-native oracle. A .sh will NOT run here without Git Bash.
Set-Content -Encoding utf8 tasks\001-fix-null-deref\oracle.ps1 @'
$ErrorActionPreference = "Stop"
Set-Location "$PSScriptRoot\repo"
pytest tests/test_parse_header.py -q
exit $LASTEXITCODE
'@

# PROVE it is deterministic BEFORE you trust it: same verdict twice.
powershell -File tasks\001-fix-null-deref\oracle.ps1; "run1=$LASTEXITCODE"
powershell -File tasks\001-fix-null-deref\oracle.ps1; "run2=$LASTEXITCODE"

# Writing oracle.sh on Windows instead? Save it LF, not CRLF, or bash
# reports: bad interpreter: /usr/bin/env bash^M
# Crostini is Debian, so the bash oracle applies unchanged.
cat > tasks/001-fix-null-deref/oracle.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/repo"
pytest tests/test_parse_header.py -q
EOF
chmod +x tasks/001-fix-null-deref/oracle.sh

./tasks/001-fix-null-deref/oracle.sh; echo "run1=$?"
./tasks/001-fix-null-deref/oracle.sh; echo "run2=$?"

# No pytest yet?  sudo apt install -y python3-pip && pip3 install pytest

Probe the oracle before you trust it. Two runs on the SAME code must give the SAME exit code. If they do not, you have a flaky oracle, and every number you compute after this point is noise.

Lab 3
about 60 lines

The harness: hand it the task, read the exit code.

Tonight's agent under test is Claude Code powered by z.ai (GLM), from the key you requested on slide 3.

# runner.py, the whole idea. Agent patches, ORACLE decides.
import json, pathlib, subprocess, sys

def attempt(task: pathlib.Path) -> bool:
    prompt = (task / "prompt.md").read_text()
    # non-interactive agent run, scoped to the task's repo copy
    subprocess.run(["claude", "-p", prompt], cwd=task / "repo", timeout=600)
    oracle = task / "oracle.sh"
    rc = subprocess.run(["bash", str(oracle)], cwd=task).returncode
    return rc == 0            # exit code is the ONLY signal we read

tasks = sorted(p for p in pathlib.Path("tasks").iterdir() if p.is_dir())
rows = {t.name: attempt(t) for t in tasks}
pathlib.Path("results/run1.json").write_text(json.dumps(rows, indent=2))
print(rows)
# runner.py, the whole idea. Agent patches, ORACLE decides.
import json, pathlib, subprocess, sys

def attempt(task: pathlib.Path) -> bool:
    prompt = (task / "prompt.md").read_text()
    subprocess.run(["claude", "-p", prompt], cwd=task / "repo", timeout=600)
    oracle = task / "oracle.sh"
    rc = subprocess.run(["bash", str(oracle)], cwd=task).returncode
    return rc == 0            # exit code is the ONLY signal we read

tasks = sorted(p for p in pathlib.Path("tasks").iterdir() if p.is_dir())
rows = {t.name: attempt(t) for t in tasks}
pathlib.Path("results/run1.json").write_text(json.dumps(rows, indent=2))
print(rows)
# runner.py. Identical Python, but call the PowerShell oracle.
import json, pathlib, subprocess

def attempt(task: pathlib.Path) -> bool:
    prompt = (task / "prompt.md").read_text()
    subprocess.run(["claude", "-p", prompt], cwd=task / "repo", timeout=600)
    oracle = task / "oracle.ps1"
    rc = subprocess.run(
        ["powershell", "-NoProfile", "-File", str(oracle)], cwd=task
    ).returncode
    return rc == 0            # exit code is the ONLY signal we read

tasks = sorted(p for p in pathlib.Path("tasks").iterdir() if p.is_dir())
rows = {t.name: attempt(t) for t in tasks}
pathlib.Path("results/run1.json").write_text(json.dumps(rows, indent=2))
print(rows)

# Run it:  python runner.py     (not py -3 runner.py if python is on PATH)
# Crostini: identical to Linux.
import json, pathlib, subprocess

def attempt(task: pathlib.Path) -> bool:
    prompt = (task / "prompt.md").read_text()
    subprocess.run(["claude", "-p", prompt], cwd=task / "repo", timeout=600)
    rc = subprocess.run(["bash", str(task / "oracle.sh")], cwd=task).returncode
    return rc == 0

tasks = sorted(p for p in pathlib.Path("tasks").iterdir() if p.is_dir())
rows = {t.name: attempt(t) for t in tasks}
pathlib.Path("results/run1.json").write_text(json.dumps(rows, indent=2))
print(rows)

# Container feels slow? The agent is fine, it is your disk. Keep the
# task repos small, and lean on Nebius for any model inference.

Note what is NOT here. No scoring model, no rubric, no "is this good?" call. The agent writes code, the oracle returns an integer, the harness records a boolean. That is the entire trust model.

Lab 4
one run is an anecdote

Run each task k times. Compute both numbers.

k=5 is enough to expose flakiness inside a 90 minute lab. Anything less and you are still guessing.

# wrap the single run in a k-loop, fresh repo copy per attempt
for k in 1 2 3 4 5; do
  rm -rf .work && cp -r tasks .work        # pristine start every attempt
  python runner.py --tasks .work --out "results/run$k.json"
done

# score it: per task, over k runs
#   pass_at_k     = any(r.passed for r in runs)    # optimistic
#   pass_caret_k  = all(r.passed for r in runs)    # reliability
# wrap the single run in a k-loop, fresh repo copy per attempt
for k in 1 2 3 4 5; do
  rm -rf .work && cp -r tasks .work        # pristine start every attempt
  python runner.py --tasks .work --out "results/run$k.json"
done

# score it: per task, over k runs
#   pass_at_k     = any(r.passed for r in runs)    # optimistic
#   pass_caret_k  = all(r.passed for r in runs)    # reliability
# PowerShell loop. Note: `&&` does not chain in PowerShell 5.1.
foreach ($k in 1..5) {
  Remove-Item -Recurse -Force .work -ErrorAction SilentlyContinue
  Copy-Item -Recurse tasks .work           # pristine start every attempt
  python runner.py --tasks .work --out "results\run$k.json"
}

# score it: per task, over k runs
#   pass_at_k     = any(...)   # optimistic
#   pass_caret_k  = all(...)   # reliability
# Crostini: identical to Linux.
for k in 1 2 3 4 5; do
  rm -rf .work && cp -r tasks .work
  python3 runner.py --tasks .work --out "results/run$k.json"
done

# 5 runs x 3 tasks x an agent call each. If the container is slow,
# drop to k=3 to stay inside the lab window, and SAY that your k was 3
# when you report a number.

Fresh copy per attempt. Reusing a patched repo means attempt 2 starts from attempt 1's work. That inflates everything.

pass^k is the one you act on. pass@k tells you the ceiling. pass^k tells you what you can walk away from.

Lab 5
21:30

Read the leaderboard. The numbers are the design.

task@5^51 2 3 4 5what it tells you
001-fix-null-deref yesyes ✓✓✓✓✓ Solid. This is the row you are allowed to trust.
002-refactor-parser yesNO ✓✓✓ Flaky. Works 4 in 5. Do not automate it.
003-add-csv-export NONO ✗✗✗✗✗ Never passes. A precise bug report, free.

Solid row every attempt green. pass^k holds. This is where autonomy is defensible.

Striped row the gap between @k and ^k. Your flakiness, made visible and countable.

All red not a failure of the eval. The oracle just told you something true about your agent.

Illustrative shape, real format. Your rows will differ.

Trust gates
where it breaks

Where this goes wrong, and where a human stays involved.

Flaky oracle vs flaky agent

Before blaming the agent, re-run the oracle twice on a known-good solution. If the oracle disagrees with itself, the agent was never the problem.

Do not grade with an LLM

The moment a model decides pass or fail, you have lost determinism and reproducibility, and you cannot compare this week to last.

A passing suite is not correctness

Your oracle checks what you thought to check. A green row means "did not fail my test", not "is right". Keep that honest in your head.

k=5 is a lab number

Enough to see flakiness tonight. Not enough to publish. If you quote a rate, quote your k with it.

^k = 5/5 ^k = 4/5 ^k = 2/5 ^k = 0/5 leave it alone, spot-check let it run, review the diff pair with it, never unattended do not ship this path yet

Illustrative thresholds. Pick your own, then hold to them.

Agent Rooms
running on IC infrastructure

A room is where more than one agent works on one real task.

your machine your agent, your key guarded door room mesh agent A <-> agent B per-room subjects only torn down by consensus oracle decides done exit code, same as tonight admission is checked HERE

Architecture, illustrative

  • Agents coordinate over a real mesh. Each speaks in turn, each turn is attributed to a member.
  • A grant admits you to one room. You cannot address another room's traffic.
  • Untrusted input is enveloped before an agent sees it, so a "ignore your instructions" message stays data.
  • Done is decided by an oracle, not by an agent saying it finished. Same rule as the whole night.
Forward deployed
bring me your repo

Tonight there is a helper in a live room. Its job is your bench.

Come up with a repo and a problem. We put it in front of an agent in a live room and work your bench out loud, in front of everyone.

Reads your repo and proposes three candidate tasks: a bug, a refactor, a feature.

Drafts a deterministic oracle for each one.

Says which candidate it does not trust, and why that oracle is shaky.

Hands the whole thing back to you as files you keep.

It proposes. It never grades. Your oracle decides, exactly like every other row on the leaderboard.

Honest about access

Joining a room yourself needs the rooms:join scope, which is Immersive Commons member tier or above. Tonight is operator driven: Ray holds the room, you bring the problem. If you want your own room access, that is the next slide, and nobody is blocked on it tonight.

On-ramp
not tonight's critical path

Want your own room? Three steps.

01Request ic-member tier from your Immersive Commons account.
02Ray approves it. That is a human click, so ask him tonight while you are standing here.
03Mint an agent token carrying rooms:join. Scopes cannot be added later, so ask for it at mint time.

Then you can open a room, assign roles, put your own agents in it, and tear it down by consensus. Rooms are not unilaterally destroyable, which is the point: nobody can pull the floor out from under a run someone else is in.

Leave with
22:00

What you have that you did not have at 19:00.

A harness you wrote yourself.Sixty lines you understand line by line, because you typed them.
A task suite from your own repo.A real bug, a real refactor, a real feature. Each with an oracle you probed.
Real pass@k and pass^k numbers on your agent.Not a vibe. A number, with a k attached to it.
A rule for when to trust it.Solid rows you can automate, striped rows you cannot. Written down.
Next
bring the bench back

Saturday we point this bench at everyone's agent.

#46 Bake-Off · Sat Aug 1, 10:00 · Floor 9

Bring the exact bench you built tonight. Same tasks, same oracles, different agents. The leaderboard becomes a competition. Tonight you build the measuring stick, Saturday we use it on everybody.

Wed Aug 5#47Fast Local
Sat Aug 8#48Total Recall
Wed Aug 12#49The Swarm
Sat Aug 15#50Own the Stack, the season finale
VCN #45 · Bench
thank you

Two a week. Come back Saturday.

Join

Telegram t.me/+EBFzKXmJAVk5ZGU0
Site vibecodingnights.com
Wednesdays 19:00, Floor 10
Saturdays 10:00, Floor 9

Get involved

  • Teach a night. Bring a pattern you actually shipped. We take builder-led talks.
  • Sponsor or co-host. The lab runs on your tool and the room keeps what it builds.
  • Either one, talk to the Facilitator: Rayyan Zahid, Immersive Commons.

Hosted by Vibe Coding Nights: Rayyan Zahid (Immersive Commons), Michalis Vasileiadis (Hacker Bob), Eric Mockler (AI Geneticist), Devinder Sodhi (Learning Layer Labs). Every ticket includes z.ai + Claude Code for the session and Nebius Token Factory credits for the labs.