Local development
Dev loop, quality gates, and how to add an integration adapter.
Contributing / adding an integration
Dev loop
pnpm install
pnpm lint && pnpm typecheck && pnpm test
pnpm test:e2e # API-level e2e
pnpm --filter docs build # if you touch the docs site
Use Biome for lint/format. Prefer small PRs aligned to milestone issues. Do not change scorer/agent logic in docs-only PRs. Local testing how-to (gates, smoke checklist): repo docs/TESTING.md.
Quality gates
| Gate | Command |
|---|---|
| Lint | pnpm lint |
| Types | pnpm typecheck |
| Unit | pnpm test |
| E2E | pnpm test:e2e |
| Replay | pnpm replay (when touching scoring) |
| Docs site | pnpm --filter docs build |
Root pnpm ci runs lint + typecheck + test + test:e2e.
Adding an integration (adapter sketch)
- Adapter: normalize provider payloads into change events / entities (no secrets in domain objects)
- Registry: register alongside GitHub / Sentry / Vercel
- Webhooks / backfill: HMAC verify, delivery idempotency, cursor checkpoints
- Fixtures / mocks: add JSON under
mock-integrations/so CI stays offline-friendly - Security: reject unknown project/install IDs; ciphertext-only secrets
- Docs: update Connect integrations + Security
Core correlation/scoring should stay provider-agnostic. New MCP evidence sources use the gated read adapter (FEATURE_MCP_CLIENT; fails closed as not_configured without a registry). The full multi-server registry is deferred. Plug them in via adapters, not new core types.
Tier guidance
| Tier | Examples | Expectation |
|---|---|---|
| Tier-1 | GitHub, Sentry, Vercel | MVP: keep healthy |
| Tier-2 | Datadog, Slack/Jira, flags | Roadmap adapters |
| Tier-3 | K8s, AWS/GCP | Post-MVP / MCP client |
Docs site contributions
- Articles:
apps/docs/content/docs/*.md(frontmatter:title,description,order,section) - Marketing: App Router routes under
apps/docs/src/app/ - OSS catalog: Open source tools (engineering SoT
docs/INTEGRATIONS_OSS.md) - Deploy: Root Directory
apps/docs. Seeapps/docs/README.md
Tone: change intelligence, not AI SRE hype. Never claim causation as proven.