---
title: Open questions
description: "Four decisions this pipeline is waiting on, and who owes each one."
---

# Open questions

Four things are undecided. Everything else on these pages is settled — including
where the local mirror lives, which the standard at `1f9bd4f` answers in
[Storage](/be-pipeline-meeting-transcripts/storage). That one is not open.

## 1. Does `meeting_summaries` return per-occurrence UUIDs?

**Decides: whoever builds it, in one API call.** Highest-value thing to test
first.

```text
  GET /meetings/meeting_summaries
        │
        ├── returns a per-occurrence UUID  ──▶ ENUMERATE = 1 call. Done.
        │
        └── returns only a meeting ID      ──▶ ENUMERATE = 3 calls:
                                                Reports API per user, then
                                                /past_meetings/<id>/instances.
                                                Misses instant and PMI meetings.
```

Not resolvable from public docs. The fallback enumerator is already specified in
[Pipeline](/be-pipeline-meeting-transcripts/pipeline) and works either way, so
this decides effort, not feasibility.

## 2. Can an S2S app hold `meeting:read:list_summaries:admin`?

**Decides: the Zoom scope picker.** One 2026 dev forum thread reported it could
not be added to a Server-to-Server app, then resolved as a role permission on
the creator's own user rather than an S2S limitation **[UNVERIFIED]**.

That scope is the enumerator for the recommended route. If the picker genuinely
will not offer it, the design forks to the Reports API fallback. **Step one of
the build: create the app as the account owner and screenshot the scope list.**

## 3. Who runs the sync, and what staleness is acceptable?

**Decides: Ryan. Owed.**

Agents in this harness read files. They may have no shell at all — the agent
that wrote this page had none. **Do not assume an agent refreshes its own
mirror.** "The agent syncs" is a hole, not a spec.

The assumption written into
[Pipeline](/be-pipeline-meeting-transcripts/pipeline): a daily 06:00 poll sets
end-to-end latency, so a meeting is readable the next morning, and any extra
mirror trails S3 by 15 minutes. Both numbers are placeholders until Ryan
confirms them, and the job has no named owner.

## 4. Consent — internal, and what changes with a client on the call

**Decides: Ryan. Nobody else can.** This is a legal and commercial ruling, not a
technical one.

Two parts. First, sign off the house rule for internal meetings in
[Consent](/be-pipeline-meeting-transcripts/consent). Second, and harder: does a
client call transcript in a private S3 bucket satisfy what the MSA says about
where client data lives? An MSA may prohibit recording, require notice, require
deletion on request, or say nothing — which is not permission.

Until that ruling exists, **client calls are not transcribed.** The internal
pipeline can ship without it.

---

Answer 2 first — it is a five-minute check and it decides whether the build
starts. Then 1. Three and four are Ryan's, and four gates client calls only.
