Post → media → schedule → job → execution

Post → media → schedule → job → execution A data-flow diagram generated by Archify. 01 / Compose 02 / Store 03 / Schedule 04 / Dispatch 05 / Execute Composer · In the browser · 01 / Compose · browser Composer In the browser browser S3 · Private bucket · 02 / Store · binaries S3 Private bucket binaries DynamoDB · Post record · 02 / Store · text + refs DynamoDB Post record text + refs Due index · SCHEDULE#DUE · 03 / Schedule · sorted by time Due index SCHEDULE#DUE sorted by time Scheduler tick · Cron + agent poll · 03 / Schedule · locked Scheduler tick Cron + agent poll locked DeviceJob · References only · 04 / Dispatch · idempotent DeviceJob References only idempotent Asset release · Lease checked · 04 / Dispatch · 15 min Asset release Lease checked 15 min Farm Agent · Leases and executes · 05 / Execute · device Farm Agent Leases and executes device Execution record · Every step, timed · 05 / Execute · history Execution record Every step, timed history uploads image / video direct binaries caption + refs text and references due-time entry scheduled only due before now bounded sweep one job per occurrence conditional write leased with a fencing token device reserved agent asks for media authorised short-lived presigned GET expires downloads to local cache verified by checksum reports every step timeline Legend primary data policy / PII async batch data store data flow

The split that matters

  • • Captions, metadata and references live in DynamoDB
  • • Images and video never pass through a server function
  • • A Post carries mediaAssetIds — never bytes, never base64

Intent becomes work

  • • A scheduled post writes one entry into a due-time index
  • • The tick claims it with a conditional delete, then creates a job
  • • The job id derives from the idempotency key, so replays converge

How media reaches a phone

  • • The agent asks; it is never handed bytes in a job
  • • Agent, lease, job, workspace and media ownership are all checked
  • • The link expires in minutes and is never persisted