feat(ingest): step 3 — webhook ingest path, forge seam, fixtures
4 months ago
Authored
grim- forge: ForgeAdapter interface + types (RawForgeEvent, DiffFile, ForgeAction
incl set-check, ContributorProfile)
- forge-github: HMAC verify (timing-safe), normalize (fixture-validated),
app JWT + installation token cache; captured fixtures + provenance
- contracts: check.ts (CheckState per §7)
- db: queue (pg-boss), events service — insertRawEvent ONE tx insert+enqueue,
markEventNormalized (+NOTIFY), quarantine, cursor listEvents; docker-cli
test-postgres helper (testcontainers hangs under bun)
- api: hono app, POST /webhooks/github (verify → tx → 200, nothing else)
- integration tests on real postgres: row+job, duplicate delivery = one row,
401 paths; verification queue items 1-3 for live App setup
Parent218f56e
31 files changed
- DECISIONS.md+33−0
- VERIFICATION-QUEUE.md+36−0
- all-summaries.md+39−0
- apps/api/package.json+9−2
- apps/api/src/env.ts+19−0
- apps/api/src/index.ts+35−9
- apps/api/src/routes/webhooks.ts+44−0
- apps/api/src/webhooks.integration.test.ts+142−0
bun.lock+58−0packages/contracts/src/check.ts+23−0packages/contracts/src/index.ts+1−0packages/db/package.json+2−1packages/db/src/index.ts+8−0packages/db/src/migrate.ts+14−7packages/db/src/queue.ts+25−0packages/db/src/services/events.ts+143−0packages/db/src/testing.ts+76−0packages/forge-github/fixtures/PROVENANCE.md+16−0packages/forge-github/fixtures/issue_comment.created.json+277−0packages/forge-github/fixtures/ping.json+140−0packages/forge-github/fixtures/pull_request.closed.json+519−0packages/forge-github/fixtures/pull_request.opened.json+454−0packages/forge-github/fixtures/pull_request.synchronize.json+521−0packages/forge-github/fixtures/push.json+154−0packages/forge-github/package.json+5−1packages/forge-github/src/client/auth.ts+83−0packages/forge-github/src/index.ts+10−9packages/forge-github/src/webhook/normalize.ts+175−0packages/forge-github/src/webhook/verify.ts+28−0packages/forge-github/src/webhook/webhook.test.ts+118−0packages/forge/src/index.ts+111−8