Files
pad/.gitignore
T
xarmian 287fa545fb feat(loadtest): add cmd/loadtest-collab + DOC-1307 findings (TASK-1270) (#468)
Synthetic Go load-test for the Yjs collab dumb-relay. Each
simulated client opens a WebSocket, sends tagged sync frames at
a configurable rate, consumes inbound frames, and computes
broadcast fanout latency.

Doesn't depend on a real Yjs port — the dumb-relay's first-byte
discriminator (yMessageSync=0) is enough to exercise the persist +
broadcast path with synthetic payloads. Each frame embeds a
unix-nano timestamp + client ID so receivers can compute round-
trip latency without out-of-band coordination.

Findings (in DOC-1307):
- N=5, N=25: clean, p95 < 10ms, fanout matches expected (N-1)x
- N=100: 38/100 dial failures (consistent), but the 62 successful
  see p95=27ms — server rejects ~38% of simultaneous dials at this
  level. Filed BUG-1308 to investigate the ceiling.
- Op-log grows unbounded without compaction; old runs replay
  on reconnect causing latency blow-up. Filed TASK-1309 to wire
  a periodic prune sweeper.

Self-reviewed only; codex was unresponsive today after multiple
hour-long retries.
2026-05-09 12:05:23 -04:00

59 lines
675 B
Plaintext

# Binary
/pad
/pad.exe
/loadtest-collab
# Web build output
web/build/
web/node_modules/
web/.svelte-kit/
# Pad workspace data (local to each user)
.pad/
.pad.toml
# Legacy planning docs (not for public repo)
v1-archive/
# Environment & secrets
.env
.env.*
!.env.example
# Database files
*.db
*.sqlite
*.sqlite3
# OS
.DS_Store
Thumbs.db
# Editor
.vscode/
.idea/
*.swp
*.swo
*~
.agents/
.claude/
.codex
.codex/
# Agent tool local configs (not for public repo)
AGENTS.md
# Go
*.test
*.out
coverage.txt
# Distribution
dist/
# Playwright e2e artifacts (scoped to the test fixture, never the
# developer's real ~/.pad)
.pad-e2e/
web/playwright-report/
web/test-results/