# Complete - provider_neutral_plane_entrypoint/01_pipeline_mapper

## 완료 일시

2026-05-23

## 요약

Provider-neutral work item task mapper를 추가하고 message whitespace fallback 회귀를 수정했다. 총 2회 리뷰 루프 후 최종 PASS.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G06_0.log` | `code_review_cloud_G06_0.log` | FAIL | `firstNonEmpty`가 공백 message 후보를 건너뛰지 않아 후속 HTTP 전환 시 fallback 회귀 가능성이 확인됐다. |
| `plan_cloud_G06_1.log` | `code_review_cloud_G06_1.log` | PASS | trim 기반 fallback과 공백 후보 단위 테스트가 추가되어 이전 FAIL 이슈가 해소됐다. |

## 구현/정리 내용

- `services/core/internal/workitem`에 provider-neutral `TaskCreateInput`과 `BuildCreateTaskInput` mapper를 추가했다.
- mapper payload/external metadata를 `provider`, `tenant`, `project`, `id`, `state_id`, `external_url`의 provider-neutral key로 저장하도록 했다.
- `firstNonEmpty`를 trim 기반으로 수정해 공백-only comment/description을 건너뛰고 선택된 message를 trimmed value로 저장하도록 했다.
- mapper의 comment 우선순위, provider-neutral metadata, title fallback, invalid ref, whitespace fallback 단위 테스트를 추가했다.

## 최종 검증

- `cd services/core && gofmt -w internal/workitem/*.go` - PASS; 출력 없음.
- `cd services/core && go test -count=1 ./internal/workitem ./internal/workflow` - PASS; `internal/workitem`과 `internal/workflow` 모두 `ok`.
- `git diff --check` - PASS; 출력 없음.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
