A professional, configurable Node.js tool to seed realistic, multi-user Pull Request activity in Azure DevOps.
This documentation follows a Normative vs. Descriptive architecture. Technical logic is centralized in normative contracts.
- Configuration Reference: Exhaustive schema documentation, hierarchical overrides, and the "Law of Idempotency."
- Multi-Run Accumulation: Normative rules for simulating development activity over multiple days/runs.
- Multi-User Simulation & Security: Simulating real developers, identity resolution, and critical security "DO NOTs."
| Example | Users | Strategy | Use Case |
|---|---|---|---|
| single-user | 1 | isolated | Quick demo, solo dev |
| multi-user-team | 5 | isolated | Team simulation |
| enterprise | 10 | isolated | Large-scale testing |
| accumulation | 2 | direct | Multi-day activity |
| isolated-greenfield | 1 | isolated | Fresh repos per run |
- Architecture Diagrams: Visual Mermaid diagrams of execution flows, module dependencies, and security patterns.
npm install && npm run buildCaution
Your ADO project must already exist. The seeder creates repos within existing projects, not projects themselves. See Prerequisites.
Create a seed.config.json (see Configuration Reference):
{
"org": "your-org",
"projects": [{ "name": "App", "repos": ["ServiceA"] }],
"users": [{ "email": "dev@corp.com", "patEnvVar": "ADO_PAT" }],
"seed": 12345
}Set your PAT in the environment and start the seeder:
# Windows
$env:ADO_PAT = "your-token"
npm start -- --run-id day-1- Multi-User Simulation: Rotate between multiple PATs for creators, reviewers, and commenters.
- Deterministic Drift: Seeded PRNG ensures diverse but repeatable content generation.
- Hardened Security: Ephemeral
GIT_ASKPASSauthentication ensures tokens never touch.git/config. - Collision Guard: Built-in
ls-remotechecks prevent data corruption from runId reuse. - Best-Effort Preflight: Scans for branch policies before execution to warn of potential merge blocks.
Note
This tool is part of the OddEssentials Platform. For issues or contributions, please refer to the internal repository governance.