```yaml
id: UJ-001
title: Decision answer exposes unavailable collector operation
actors: [dashboard-operator]
surface: decisions
goal: Operator receives explicit failure and pending decision remains unanswered.
trigger: Activate `Pin 0.44 until M2 lands` at `/decisions`.
fixtures: [startFixtureCollector, DECISION_ITEMS]
success_state:
  visible: `Answer failed — try again` renders.
  durable: Pending decision remains in collector state.
  persistence: Fresh GET returns same pending decision.
source_specs: [apps/web/src/pages/decisions.astro, apps/web/src/components/decisions/DecisionsApp.tsx, apps/web/src/lib/decision-answer.ts, apps/web/src/pages/api/collector/[...path].ts, collector/src/server.ts, apps/web/tests/decisions.spec.ts, apps/web/tests/fixture-collector.ts]
readiness: blocked
canonical: false
blockers: [SP-001]
```

## Path

| Hop | Evidence |
|---|---|
| UI trigger | `apps/web/src/pages/decisions.astro:9` |
| Request construction | `apps/web/src/lib/decision-answer.ts:7` |
| Endpoint auth and parse | `apps/web/src/pages/api/collector/[...path].ts:70` |
| Authoritative write | N/A — collector has no decision-answer handler. |
| Response | `collector/src/server.ts:94` |
| Terminal render | `apps/web/src/components/decisions/DecisionsApp.tsx:73` |

## Happy path

### H1
- Setup: Fixture collector contains pending `decision-drizzle-pin` with `pin-044` action.
- Action: Activate `Pin 0.44 until M2 lands` at `/decisions`.
- Request: `POST /api/collector/decisions/decision-drizzle-pin/answer`.
- Response: `404` with "not found".
- Visible: `Answer failed — try again` renders.
- Durable: UNKNOWN — SP-001: no collector decision handler can commit an answer; pending decision remains.
- Fresh read: `GET /api/collector/items` returns `200` with `decision-drizzle-pin` still pending.
- Forbidden: No harness decision endpoint is called; no pending decision is removed.
- Evidence:
  - Setup: `apps/web/tests/decisions.spec.ts:9`, `apps/web/tests/fixture-collector.ts:177`
  - Action: `apps/web/tests/decisions.spec.ts:134`
  - Request: `apps/web/src/lib/decision-answer.ts:7`
  - Response: `collector/src/server.ts:94`
  - Visible: `apps/web/src/components/decisions/DecisionsApp.tsx:73`
  - Durable: UNKNOWN — SP-001: `collector/src/server.ts:60` accepts only `/actions/:verb`.
  - Fresh read: `collector/src/server.ts:50`
  - Forbidden: `collector/src/server.ts:60`

## Alternate and failure paths

### A1
- Setup: Collector upstream is unreachable from dashboard proxy.
- Action: Activate `Pin 0.44 until M2 lands` at `/decisions`.
- Request: `POST /api/collector/decisions/decision-drizzle-pin/answer`.
- Response: `502` with "collector unreachable".
- Visible: `Answer failed — try again` renders.
- Durable: Pending decision remains unmodified.
- Fresh read: `GET /api/collector/items` returns `502` with `collector unreachable`.
- Forbidden: No collector or harness write occurs.
- Evidence:
  - Setup: `apps/web/src/pages/api/collector/[...path].ts:43`
  - Action: `apps/web/src/components/decisions/DecisionsApp.tsx:158`
  - Request: `apps/web/src/lib/decision-answer.ts:7`
  - Response: `apps/web/src/pages/api/collector/[...path].ts:52`
  - Visible: `apps/web/src/components/decisions/DecisionsApp.tsx:76`
  - Durable: `apps/web/src/pages/api/collector/[...path].ts:43`
  - Fresh read: `apps/web/src/pages/api/collector/[...path].ts:52`
  - Forbidden: `apps/web/src/pages/api/collector/[...path].ts:43`

## Permissions and boundaries

N/A — dashboard has no user identity or RBAC boundary; proxy injects one collector token for all browser requests. `apps/web/src/pages/api/collector/[...path].ts:26`

## Source specs

- `apps/web/src/pages/decisions.astro`
- `apps/web/src/components/decisions/DecisionsApp.tsx`
- `apps/web/src/lib/decision-answer.ts`
- `apps/web/src/pages/api/collector/[...path].ts`
- `collector/src/server.ts`
- `apps/web/tests/decisions.spec.ts`
- `apps/web/tests/fixture-collector.ts`
