Story-3103 ยท functions lane

Remember which door a document entered through

The upload drawer already knows whether counsel selected a file locally, through Google Drive, or through Dropbox. The finalize request can now carry that fact onto the document record instead of discarding it.

The persisted shape

Local
local

Google Drive
drive

Dropbox
dropbox

Historical rows stay null. The migration does not relabel them as local because the system never observed how those files were selected.

Boundary and rollout

The API accepts only the three named values and returns the stored value on document views. No OAuth token, Drive connection, picker state, nudge, model call, or custom tracing span is added.

Staging must run alembic upgrade head before pramaan-app starts sending intakeOrigin. The main-branch staging workflow performs that migration before deploying the App API Lambda.