Skip to content

[finding] 8 of FeedItemType's 13 kinds still have no producer on any objectui surface #5877

Description

@claude

Split out of #5840 by PM ruling: that card's fix extends the sys_activity type map; narrowing FeedItemType is a cross-repo spec retirement (the enum is published by @objectstack/spec, and retiring a member carries ADR-0087 registry obligations), so it is emphatically not that card's surface. Recorded here instead. Observation, not a queued fix.

Re-measured at live source, not from a shipped bundle

FeedItemType (@objectstack/spec/data) publishes 13 kinds. Read at the installed spec:

comment | field_change | task | event | email | call | note | file |
record_create | record_delete | approval | sharing | system

Producers that exist on any objectui surface today (after #5840 lands scheduled -> event):

kindproducer
field_changesys_activity types created/updated/deleted/assigned/shared, via packages/plugin-detail/src/renderers/recordActivityFeed.ts
tasksys_activity type completed
systemsys_activity type system
eventsys_activity type scheduled — new in #5840
commentsys_comment rows, mapped in packages/app-shell/src/views/RecordDetailView.tsx (the host discussion-context path, not the sys_activity map)

Eight kinds have no producer anywhere: email, call, note, file, record_create, record_delete, approval, sharing.

Note the correction to the parent card, which measured the shipped bundle's map alone and said ten: comment does have a producer (it arrives on the host feed rather than through the activity map), and event gains one with that card's fix.

Why it is worth recording

They are authorable. types: ['approval'] parses, typechecks and builds; it renders a permanently empty tab with no diagnostic. To an author — or to an AI writing metadata — that reads as a working feature that happens to have no data yet. It is a declared surface enforced by nothing.

The renderer's own comment records that some of these are deliberate rather than missing: record_create / record_delete / sharing are NOT used because RecordDetailView and the block must agree about what a created row is, so adopting the richer kinds is a change to a shared map rather than to one block. So the disposition per kind is a real question, not a batch decision.

Three directions, none taken here:

  1. Give the kinds producers (largest; several would need new system tables or new reads).
  2. Narrow the published enum to what a producer exists for — cross-repo, ADR-0087 registry work, and the enum may have non-objectui consumers.
  3. Make the emptiness diagnosable rather than silent — e.g. types entries with no producer warn at author time.

Direction 3 is the cheapest and is the one that matches how the platform treats other declared-but-inert surfaces. Recommending nothing; triage decides.

Found while implementing #5840; deliberately not fixed there.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions