The lexgen migration flipped several pointer signatures to values,
which compiled fine but broke behavior:
- statedb draft mutate-callbacks (SetDraftReady/SetDraftError/
UpdateDraftMetadata) took records by value, silently discarding
every mutation — user metadata edits and ready/error transitions
were no-ops. Restored *placestream.VodDraftVideo callbacks.
- ToLivestreamView, ToStreamplaceMessageView, GetMediaViewCountByURI
returned values where next returned pointers; consumers (bus
subscribers, tests) assert pointer types, and glex's stamped
MarshalJSON/RecordTypeID are pointer-receiver, so value publishing
would also drop $type on the wire.
- repaired dead-literal scars from the migration (`if true`,
`|| false`, `&& true`) in livestream_test, api.go, badges, og,
place_stream_badge.
- indigo's repo.GetRecord decodes through indigo's lexutil registry,
which no longer knows place.stream.* types → "unrecognized lexicon
type" in TestServerRepo. All four call sites only needed
existence/CID; switched to GetRecordBytes.
- lexicon_repo_test compared string Since against *string Rev.
Fixes: TestChatMessage, TestToLivestreamViewNil,
TestDeleteMediaViewCount, TestDraftVideoUpdateMetadataRecomputesCID,
TestSetDraftReadyAndError, TestDraftLifecycleThroughVODProcessor,
TestDraftLifecycleErrorFlipsDraft, TestServerRepo, TestLexiconRepo
(the last two were masked in CI by TestChatMessage's panic).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>