# ADR-001: JSONB data columns vs individual columns - **Status**: Accepted - **Date**: 2026-04-19 - **Deciders**: alkdev ## Context Opencode stores message and part content as JSON blobs in a `data` column. AI SDK `UIMessage` uses inline parts. Need format that works for both query flexibility and streaming. ## Decision Use separate structured columns for high-query, high-filter fields (role, status, type) and JSONB `data` columns for rich, type-discriminated content. Follows opencode pattern. ## Consequences JSONB content is opaque to SQL queries on individual fields. If we need to query inside `data`, add generated columns or GIN indexes. Flexibility outweighs the query limitation for now. Positive: clean separation between queryable and flexible data, consistent with proven opencode pattern.