023 — architect journal

S1 — Finding

Canonical-home check cleared. All 4 new routes land in `src/app/api/exa/` — the established Exa-API namespace. No new repo. No protected-file touches. No new canonical entity (no new Supabase project, no new deployment target). architecture.json does not need an update; the routes are additive within an already-tracked surface.

S2 — Blind spot

I almost let `/api/exa/websets/[id]/route.ts` use a different path convention than `/api/exa/run/`. Caught it in interface-freeze: the existing dynamic route pattern under `/api/deals/[slug]/` uses the bracket-folder convention, and the new Websets dynamic routes should match. They do now. Lesson: when adding routes to an existing namespace, lift the convention from the closest sibling, not from generic Next.js docs.

S3 — Pattern cited

"Verify with reality before recommending" — applied to docs. exa-mastery SKILL.md described Webset status as `running → idle → completed`. Live `/websets/v0/websets` docs say `pending|running|idle|paused`. The skill file drifted. Same kind of drift as the 2026-05-04 mono-repo incident: docs went stale, agents read them as truth. Mitigated here by fetching live docs in Phase 0.

S6 — What changed about how I work

Add to architect's Phase 0 checklist: **fetch live docs for any third-party API the build touches.** Today the WebFetch to `https://exa.ai/docs/reference/research` surfaced the May 1, 2026 sunset notice and saved us from shipping a soon-dead route. That fetch should be mandatory, not optional, for any build that adds a new endpoint integration.

Generated from 023__architect.md — do not edit this HTML directly.