ChangeGraphChangeGraph

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

GateCommand
Lintpnpm lint
Typespnpm typecheck
Unitpnpm test
E2Epnpm test:e2e
Replaypnpm replay (when touching scoring)
Docs sitepnpm --filter docs build

Root pnpm ci runs lint + typecheck + test + test:e2e.

Adding an integration (adapter sketch)

  1. Adapter: normalize provider payloads into change events / entities (no secrets in domain objects)
  2. Registry: register alongside GitHub / Sentry / Vercel
  3. Webhooks / backfill: HMAC verify, delivery idempotency, cursor checkpoints
  4. Fixtures / mocks: add JSON under mock-integrations/ so CI stays offline-friendly
  5. Security: reject unknown project/install IDs; ciphertext-only secrets
  6. 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

TierExamplesExpectation
Tier-1GitHub, Sentry, VercelMVP: keep healthy
Tier-2Datadog, Slack/Jira, flagsRoadmap adapters
Tier-3K8s, AWS/GCPPost-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. See apps/docs/README.md

Tone: change intelligence, not AI SRE hype. Never claim causation as proven.