Files
wursor/docs/decisions
SinachPat b61ff21710
Mirror to GitHub / mirror (push) Canceled after 0s
feat: de-risk agent loop — semantic tool schema + agent loop + real-WP spike harness
- api/agents: tool-schemas (semantic allowlist), agent-loop (multi-step + budget), circuit-breaker, llm-client/tool-executor interfaces
- api/agents: WpRestExecutor (real WP REST), OpenRouterLlmClient
- e2e/agent: multi-step prompts + run-agent-spike runner (scores rendered changes)
- ADR 0017; 101 unit tests green
2026-08-15 23:49:07 +01:00
..

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 Accepted
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

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.