Lab · Upload
Upload → Validate → Configure → Run → Results
Server Actions mirror the Amplify + S3 + Lambda stack: request presigned URLs, validate files, gate by plan, and queue classical or quantum jobs.
Upload
Request a presigned URL and PUT the CSV/GraphML to qzoo-lab-uploads/{user}/{uploadId}.
const presign = await requestUploadUrl('graph.graphml', 'basic');
await fetch(presign.url, { method: 'PUT', body: file, headers: presign.fields });Validate (Lambda)
Lambda checks size, schema, encodings, and extracts a preview sample with node/edge counts.
const result = await runValidation(presign.uploadId);
console.log(result.metrics.nodes, result.metrics.edges);Configure & queue
Pick Community Detection or Network Flow; gate modes by plan and push to classical or quantum queues.
await queueJob({ uploadId: presign.uploadId, task: 'community_detect', mode: 'classical', plan: 'basic' });Track results
Read LabJobs and S3 artifacts; emit receipts later via QTL.
const jobUrl = '/lab/results/' + presign.uploadId;Latest presign
qzoo-lab-uploads/demo-user/upl-3c9356bb-0171-430b-95f5-ed1ddffbca2f/graph.graphml
Expires in 900s
Validation preview
Nodes: 320
Edges: 1180
Weights: yes
Job queued
ID: job-upl-3c9356bb-0171-430b-95f5-ed1ddffbca2f
Queue: classical
Status: queued
Plan enforcement examples
basic
Uploads: 50 KB
Edges: ≤ 1k edges
Sandbox: Single-qubit sandbox
pro
Uploads: 5 MB
Edges: ≤ 100k edges (pre-filtered)
Sandbox: Single + Multi-qubit sandbox
org
Uploads: 50 MB
Edges: Priority queue, higher limits
Sandbox: All sandboxes + team workspace