Task · SKT-0157

Preserve native generation part kind when captured content is intentionally empty

Description

The current native Part representation and mapper infer thinking from nonempty content. After metadata-only stripping, an empty thinking part is encoded as Part_Text instead of the pinned SDK Part_Thinking shape. An actual local HTTP/protojson probe demonstrates the mismatch. The new app pipeline therefore fails closed for selected metadata-only thinking instead of leaking content or silently changing kind. Support should be explicit and backward-compatible, not inferred from placeholder content or unsourced provider strings.

Acceptance Criteria

Definition of Done

Implementation Notes

loop52 BATCH3: landed bb31a00. l157 candidate 8dea6340 (repair 1: json omitempty after rv157 M1); rv157b delta PASS (84/84 usage identical); CodeRabbit 5 files 0; gate gaterun 20261022T035227Z-synthkit-3c66e408 exit 0 on ba5d29a. Metadata-only producer follow-up: SKT-0160.

View the source file on GitHub