Same component, same row type, same columns. Everything
platform-shaped is data in CloudPlatform and values on the
row — not branches in the view. Below is what each actually renders from what
its API actually returns.
Both clocks. Attendees from the calendar. 1:N is rare —
it means you joined the same meeting twice. No Expires column:
hasPerFileExpiry is false because Drive has no per-file expiry and
retention is an admin policy.
| Meeting | Scheduled | Recorded | Size | Status | |
|---|---|---|---|---|---|
| Wed 13 Aug | |||||
P04 Interview Priya Raman · Simon Ellery |
09:30 1h |
09:34 52m 11s |
1.1 GB | ||
▾P05 Interview
Dana Okonkwo · Simon Ellery |
11:00 1h | — | — | ||
Recording 1 | — | 11:02 32m 04s |
618 MB | ||
Recording 2 | — | 11:41 38m 19s |
701 MB | ||
Two children = two interviews. The count in the footer is honest and the button does what it says.
Always flat — one recording per meeting, so the outline
never grows a triangle. Attendees from calendarView. Duration is
never known (duration: nil in every row), and the Expires column
is declared but Graph does not serve it.
| Meeting | Scheduled | Recorded | Size | Status | |
|---|---|---|---|---|---|
| Wed 13 Aug | |||||
P04 Interview Priya Raman · Simon Ellery |
09:30 1h |
09:34 — |
1.1 GB | ||
P05 Interview Dana Okonkwo · Simon Ellery |
11:00 1h |
11:02 — |
1.3 GB | ||
Team standup Tomas Lind · Aoife Brennan |
14:00 30m |
14:01 — |
210 MB | ||
Footer says "3 meetings" only — meetings and recordings are the same number, so the second noun is withheld. The red dashes are the real gap: Teams knows when a recording started and never how long it ran.
1:N is routine, not rare — yieldsMultipleMediaFiles
is true for Zoom alone. Attendees never arrive and the line simply isn't there —
saying "no roster" on every row would read as a fault the researcher is expected
to fix. Expires is real, from the account's auto-delete.
| Meeting | Scheduled | Recorded | Size | Expires | |
|---|---|---|---|---|---|
| Wed 13 Aug | |||||
▾P04 Interview |
09:30 1h | — | — | in 12 days | |
Speaker view | — | 09:34 52m 11s |
1.1 GB | ||
Gallery view | — | 09:34 52m 11s |
1.2 GB | ||
Shared screen | — | 09:34 52m 11s |
640 MB | ||
Audio only | — | 09:34 52m 11s |
48 MB | ||
Every child has the same start and the same duration, because they are one session. "Import 4 Recordings" produces four files of the same 52 minutes, and s01 will group them by stem or not at all — either one session with four videos, or four participants who said identical things.
| Meet | Teams | Zoom | |
|---|---|---|---|
| Meeting clock | event | calendarView | meeting.start_time |
| Recording clock | new, unproven | createdDateTime | per file, unused |
| Duration | new, unproven | never | meeting's, not the video's |
| Attendees | yes | yes | never |
| Organiser | yes | never set | never set |
| Expires column | hidden | declared, unserved | real |
| Children mean | another session | — | same session, another rendering |
So: one codebase, and the conditions
are already data rather than branches. CloudPlatform holds
windowChoices, hasPerFileExpiry,
yieldsMultipleMediaFiles and the vendor strings; the row carries
attendees, duration, organiser. Every
difference above renders as an absence — a dash, a missing column, a blank
subtitle — not as a different layout. That is the design working.
Except the last row of the table, which is not an absence but a different
meaning wearing the same shape, and no amount of platform data fixes that.