Files
wursor/docs/decisions/README.md
T
Claude 6947113027 feat(web): marketing Home page and the product component library (ADR 0023)
Product UI components are built once at design size from the Figma file and reused by the marketing mockups and, later, the app. Text contrast tokens now meet WCAG AA in both themes, with a test. Pricing stays hidden until decided.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014SdXCbrN5PtGExkpvMaMHx
2026-10-12 15:25:50 +00:00

3.6 KiB

Architecture Decision Records

Wursor records significant technical and product decisions as ADRs. This directory is the source of truth; PRD §14 holds the product-level "locked decisions", while these records capture the engineering choices and tradeoffs behind them.

Each ADR is a single file following the Nygard format: Status, Context, Decision, Consequences. "Options considered" and "Rejected" are kept explicit to honor the wursor-decision-log skill.

Status legend

  • Accepted — agreed; in force.
  • Proposed — under discussion, not yet binding.
  • Superseded — replaced by a later ADR; see the link.

Index

ADR Title Status
0001 MVP is the content-change loop, not the full P0 feature list Accepted
0002 Phase 0 spikes gate the scaffold Accepted
0003 Wursor generates the pairing code, not the plugin Accepted
0004 Plugin install is a 40-slug allowlist, fail-closed Accepted
0005 Golden harness scores slot-fill tool calls against JSON fixtures Accepted
0006 Builder detection uses slugs + post meta with a priority order Accepted
0007 Sandboxes proxy uploads; never copy the media library Accepted
0008 Workspace ships empty packages, not placeholder source Accepted
0009 Repository renamed originmain → wursor Accepted
0010 Golden harness scores live runs through a provider-agnostic LLM client (OpenRouter first) Accepted
0011 Fastify is the API server; React + Vite is the web shell Partially superseded by 0018 (web half)
0012 In-memory user store behind a UserStore interface; Postgres deferred Accepted
0013 Sandbox orchestration mocks the Docker boundary; real daemon client deferred Accepted
0014 Postgres user store via a Queryable boundary; schema in SQL migrations Accepted
0015 Docker daemon client via dockerode behind an injected engine; sandbox gated by env Accepted
0016 Pairing-code TTL/lockout lives on the Wursor API; the plugin enforces token/HMAC/scope Accepted
0017 The agent is given a semantic, allowlisted tool schema — not a raw wp_cli surface Accepted
0018 The web app is Next.js (App Router); Fastify stays as the Wursor API Accepted
0019 Sign-in supports an emailed code, an emailed link and passkeys Accepted
0020 Cloud sites are provisioned on WeOwn Cloud Accepted
0021 Keep the "never sees a diff" rule in AGENTS.md as written Accepted
0022 Wursor and WeOwn Cloud run on DigitalOcean Accepted (service picks to confirm)
0023 Product UI is built once at design size and reused; text contrast tokens meet AA Accepted

How to add one

  1. Copy the previous number + 1.
  2. Write Status / Context / Decision (with options + rejected) / Consequences.
  3. Add a row to this index.