Observed while implementing objectui#5896 (the console record page's sys_activity row to FeedItem construction). Out of that card's fence and not touched by its PR: different target type, different surface, and no drop — so it is a drift risk rather than a user-visible defect today.
The third reading
objectui#5878 shared the sys_activity.type table between the record:activity block and RecordDetailView; objectui#5896 shared the constructor around it. A third hand-written reading of the same column survives in a different package surface:
packages/app-shell/src/hooks/sharedUserFeeds.ts -- mapActivityRows(rows), which feeds the AppHeader bell's Activity tab and Home's inbox:
constraw=String(r.type);consttype: ActivityItem['type']=raw==='commented'||raw==='mentioned'
? 'comment'
: raw==='deleted'
? 'delete'
: raw==='created'
? 'create'
: 'update';
It also carries its own copy of the "NOW()" timestamp quirk, five lines above -- the same quirk whose two other copies objectui#5896 just folded into one.
Why it is NOT simply "adopt activityRowToFeedItem"
The target type differs. This surface produces ActivityItem (four kinds: comment / delete / create / update), not FeedItem (the closed 13-value FeedItemType spec enum). So the shared constructor cannot be dropped in, and converging would first need a decision about whether ActivityItem is a projection of FeedItem or an independent vocabulary.
What is worth deciding
- The unmapped branch is a silent widening, not a drop. Every value outside the four named ones -- including an author-extended type under the objectstack#11507 direction-4 ruling -- renders as
update. That is a specific claim about the row ("something was updated"), which is a different posture from UNMAPPED_ACTIVITY_FEED_TYPE's deliberately generic system bucket plus a once-per-value diagnostic. A scheduled meeting and an author's contract_countersigned both show the update presentation, with nothing said. scheduled is missing here too, exactly as it was missing from the console record page before objectui#5878 -- the same drift, in the copy nobody has converged yet.assigned / shared / system / completed likewise all land on update.
No behaviour is lost today, which is why this is filed rather than fixed: nothing vanishes, the icon is just coarser than the row deserves, and picking the right convergence needs the ActivityItem vs FeedItem question answered first.
Filed unassigned for triage.
Generated by Claude Code
Observed while implementing objectui#5896 (the console record page's
sys_activityrow toFeedItemconstruction). Out of that card's fence and not touched by its PR: different target type, different surface, and no drop — so it is a drift risk rather than a user-visible defect today.The third reading
objectui#5878 shared the
sys_activity.typetable between therecord:activityblock andRecordDetailView; objectui#5896 shared the constructor around it. A third hand-written reading of the same column survives in a different package surface:packages/app-shell/src/hooks/sharedUserFeeds.ts--mapActivityRows(rows), which feeds the AppHeader bell's Activity tab and Home's inbox:It also carries its own copy of the
"NOW()"timestamp quirk, five lines above -- the same quirk whose two other copies objectui#5896 just folded into one.Why it is NOT simply "adopt
activityRowToFeedItem"The target type differs. This surface produces
ActivityItem(four kinds:comment/delete/create/update), notFeedItem(the closed 13-valueFeedItemTypespec enum). So the shared constructor cannot be dropped in, and converging would first need a decision about whetherActivityItemis a projection ofFeedItemor an independent vocabulary.What is worth deciding
update. That is a specific claim about the row ("something was updated"), which is a different posture fromUNMAPPED_ACTIVITY_FEED_TYPE's deliberately genericsystembucket plus a once-per-value diagnostic. Ascheduledmeeting and an author'scontract_countersignedboth show the update presentation, with nothing said.scheduledis missing here too, exactly as it was missing from the console record page before objectui#5878 -- the same drift, in the copy nobody has converged yet.assigned/shared/system/completedlikewise all land onupdate.No behaviour is lost today, which is why this is filed rather than fixed: nothing vanishes, the icon is just coarser than the row deserves, and picking the right convergence needs the
ActivityItemvsFeedItemquestion answered first.Filed unassigned for triage.
Generated by Claude Code