---
id: T-154
name: "Kanban card inline owner selector"
description: >
  Inception: Kanban card inline owner selector

status: work-completed
workflow_type: inception
owner: human
horizon:
tags: []
related_tasks: []
created: 2026-02-18T12:50:16Z
last_update: '2026-06-11T22:23:51Z'
date_finished: 2026-02-18T16:00:22Z
target_blast_radius: 3   # T-2193 migration default (M=small-subsystem floor)
voi_score: 0.5            # T-2193 migration default (medium)
bvp_scores_proposed:
  - ts: '2026-06-11T22:23:51Z'
    estimator: bvp-estimator-v1-heuristic
    scores:
      D1: 2
      D2: 2
      D3: 2
      D4: 2
      F-RECALL: 2
      F-ORCH: 2
      F3: 2
      F1: 2
      F2: 2
    rationale: D1=2 (no-signal); D2=2 (no-signal); D3=2 (no-signal); D4=2 
      (no-signal); F-RECALL=2 (no-signal); F-ORCH=2 (no-signal); F3=2 
      (no-signal); F1=2 (no-signal); F2=2 (no-signal)
    rubric_sha: e4a00f38e801
---

# T-154: Kanban card inline owner selector

## Problem Statement

Owner field on kanban cards is read-only text. Users must navigate to the task detail page to change owner. The horizon field already has an inline dropdown — owner should follow the same pattern for consistency and speed.

## Assumptions

- A1: Owner values are a small finite set (human, agent) — suitable for dropdown
- A2: The existing horizon inline selector pattern (htmx POST + form) can be reused
- A3: No API endpoint exists for owner updates — one must be created

## Exploration Plan

1. Confirm owner values used across tasks (5 min) — DONE: human, agent
2. Confirm no existing `/api/task/{id}/owner` endpoint — DONE: confirmed missing
3. Validate htmx pattern reusable — DONE: horizon selector is the template

## Technical Constraints

- htmx + Jinja2 templating (no React/Vue)
- Flask blueprint pattern for API endpoints (web/blueprints/tasks.py)
- CSRF token required on POST endpoints
- Owner stored in YAML frontmatter of task .md files

## Scope Fence

**IN:** Inline owner dropdown on kanban card, API endpoint, form submission
**OUT:** Bulk owner changes, owner history tracking, team/role management

## Acceptance Criteria

- [x] Problem statement validated
- [x] Assumptions tested
- [x] Go/No-Go decision made

## Go/No-Go Criteria

**GO if:**
- Horizon selector pattern is reusable (confirmed)
- Owner values are finite and known (confirmed: human, agent)

**NO-GO if:**
- Owner values are free-text requiring autocomplete (not the case)

## Verification

<!-- Shell commands that MUST pass before work-completed. One per line.
     Lines starting with # are comments. Empty lines ignored.
     The completion gate runs each command — if any exits non-zero, completion is blocked.
     For inception tasks, verification is often not needed (decisions, not code).
-->

## Decisions

**Decision**: GO

**Rationale**: Trivial UI change following horizon selector pattern

**Date**: 2026-02-18T16:00:22Z
## Decision

**Decision**: GO

**Rationale**: Trivial UI change following horizon selector pattern

**Date**: 2026-02-18T16:00:22Z

## Updates

<!-- Auto-populated by git mining at task completion.
     Manual entries optional during execution. -->

### 2026-02-18T13:58:56Z — status-update [task-update-agent]
- **Change:** horizon: now → later

### 2026-02-18T13:59:07Z — status-update [task-update-agent]
- **Change:** horizon: later → now

### 2026-02-18T16:00:22Z — inception-decision [inception-workflow]
- **Action:** Recorded inception decision
- **Decision:** GO
- **Rationale:** Trivial UI change following horizon selector pattern

### 2026-02-18T16:00:22Z — status-update [task-update-agent]
- **Change:** status: started-work → work-completed
- **Reason:** Inception decision: GO

## Reviewer Verdict (v1.5)

- **Scan ID:** R-4e1a2693
- **Timestamp:** 2026-06-02T14:58:14Z
- **Catalogue:** v1.3-seed
- **Overall:** PASS
- **Needs Human:** no
- **Findings:** none
