[{"data":1,"prerenderedAt":376},["ShallowReactive",2],{"navigation":3,"\u002Fproduction-workflows\u002Fdut-records-and-ids":99,"\u002Fproduction-workflows\u002Fdut-records-and-ids-surround":371},[4,16,28,55,82],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-rocket",{"title":12,"path":13,"stem":14,"icon":15},"Your first station run","\u002Fgetting-started\u002Ffirst-run","1.getting-started\u002F2.first-run","i-lucide-play",{"title":17,"path":18,"stem":19,"children":20,"icon":22},"Core concepts","\u002Fcore-concepts","2.core-concepts\u002F1.index",[21,23],{"title":17,"path":18,"stem":19,"icon":22},"i-lucide-boxes",{"title":24,"path":25,"stem":26,"icon":27},"Projects and access","\u002Fcore-concepts\u002Fprojects-and-access","2.core-concepts\u002F2.projects-and-access","i-lucide-users",{"title":29,"path":30,"stem":31,"children":32,"icon":34},"Station runtime","\u002Fstation-runtime","3.station-runtime\u002F1.index",[33,35,40,45,50],{"title":29,"path":30,"stem":31,"icon":34},"i-lucide-circuit-board",{"title":36,"path":37,"stem":38,"icon":39},"Configure a station","\u002Fstation-runtime\u002Fconfiguration","3.station-runtime\u002F2.configuration","i-lucide-file-code-2",{"title":41,"path":42,"stem":43,"icon":44},"Custom stages","\u002Fstation-runtime\u002Fcustom-stages","3.station-runtime\u002F3.custom-stages","i-lucide-puzzle",{"title":46,"path":47,"stem":48,"icon":49},"Credentials and secrets","\u002Fstation-runtime\u002Fcredentials-and-secrets","3.station-runtime\u002F4.credentials-and-secrets","i-lucide-key-round",{"title":51,"path":52,"stem":53,"icon":54},"Multiple lanes","\u002Fstation-runtime\u002Fmultiple-lanes","3.station-runtime\u002F5.multiple-lanes","i-lucide-git-branch",{"title":56,"path":57,"stem":58,"children":59,"icon":61},"Production workflows","\u002Fproduction-workflows","4.production-workflows\u002F1.index",[60,62,67,72,77],{"title":56,"path":57,"stem":58,"icon":61},"i-lucide-factory",{"title":63,"path":64,"stem":65,"icon":66},"Applications and firmware","\u002Fproduction-workflows\u002Ffirmware-images","4.production-workflows\u002F2.firmware-images","i-lucide-cpu",{"title":68,"path":69,"stem":70,"icon":71},"DUT records and IDs","\u002Fproduction-workflows\u002Fdut-records-and-ids","4.production-workflows\u002F3.dut-records-and-ids","i-lucide-scan-barcode",{"title":73,"path":74,"stem":75,"icon":76},"Results and logs","\u002Fproduction-workflows\u002Fresults-and-logs","4.production-workflows\u002F4.results-and-logs","i-lucide-chart-no-axes-combined",{"title":78,"path":79,"stem":80,"icon":81},"Operator kiosk","\u002Fproduction-workflows\u002Foperator-kiosk","4.production-workflows\u002F5.operator-kiosk","i-lucide-monitor",{"title":83,"path":84,"stem":85,"children":86,"icon":88},"Reference","\u002Freference","5.reference\u002F1.index",[87,89,94],{"title":83,"path":84,"stem":85,"icon":88},"i-lucide-book-open",{"title":90,"path":91,"stem":92,"icon":93},"API access","\u002Freference\u002Fapi-access","5.reference\u002F2.api-access","i-lucide-braces",{"title":95,"path":96,"stem":97,"icon":98},"Troubleshooting","\u002Freference\u002Ftroubleshooting","5.reference\u002F3.troubleshooting","i-lucide-life-buoy",{"id":100,"title":68,"body":101,"description":364,"extension":365,"links":366,"meta":367,"navigation":368,"path":69,"seo":369,"stem":70,"__hash__":370},"docs\u002F4.production-workflows\u002F3.dut-records-and-ids.md",{"type":102,"value":103,"toc":361},"minimark",[104,113,120,150,157,164,170,175,200,334,349,357],[105,106,107,108,112],"p",{},"In a project, open ",[109,110,111],"strong",{},"DUT records & IDs"," to manage identifiers such as serial numbers. An organisation owner or admin can add columns and rows manually, or import a UTF-8 CSV and map each selected column to a project variable.",[105,114,115],{},[116,117],"img",{"alt":118,"src":119},"DUT records and IDs page with actions for columns, rows, and CSV import","\u002Fimages\u002Fproduct\u002F06-dut-records.png",[121,122,127],"pre",{"className":123,"code":124,"language":125,"meta":126,"style":126},"language-csv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","infuse_id,serial_number\n0x0000000000000001,SN000001\n0x0000000000000002,SN000002\n","csv","",[128,129,130,138,144],"code",{"__ignoreMap":126},[131,132,135],"span",{"class":133,"line":134},"line",1,[131,136,137],{},"infuse_id,serial_number\n",[131,139,141],{"class":133,"line":140},2,[131,142,143],{},"0x0000000000000001,SN000001\n",[131,145,147],{"class":133,"line":146},3,[131,148,149],{},"0x0000000000000002,SN000002\n",[105,151,152,153,156],{},"Each CSV row is a ",[109,154,155],{},"linked set of values",". When a station requests variables for a DUT, HTF claims one eligible row and keeps its values together. Values stay as strings, preserving leading zeros and case, so use one consistent representation for each identifier type. The station supplies the DUT ID when it claims a row; it does not need to be a CSV column.",[105,158,159,160,163],{},"Select ",[109,161,162],{},"Import CSV",", choose a file with a header row, and map its columns to existing or new project variables. Blank cells are skipped and identical rows are not imported again.",[105,165,166],{},[116,167],{"alt":168,"src":169},"Import DUT rows form explaining linked CSV values","\u002Fimages\u002Fproduct\u002F07-import-dut-rows.png",[171,172,174],"h2",{"id":173},"use-an-id-in-a-run","Use an ID in a run",[176,177,178,186,193],"ol",{},[179,180,181,182,185],"li",{},"Add a ",[128,183,184],{},"reserve_variables"," stage before programming or registration.",[179,187,188,189,192],{},"Refer to a reserved value with a runtime expression such as ",[128,190,191],{},"${provisioning.serial_number}",".",[179,194,195,196,199],{},"After the external work succeeds, add ",[128,197,198],{},"commit_variables"," for the values used.",[121,201,205],{"className":202,"code":203,"language":204,"meta":126,"style":126},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","stages:\n  - name: Reserve IDs\n    kind: reserve_variables\n    variables: [infuse_id, serial_number]\n    record_version: v2\n\n  # Program and validate the device with the reserved values here.\n\n  - name: Commit IDs\n    kind: commit_variables\n    variables: [infuse_id, serial_number]\n","yaml",[128,206,207,217,232,242,265,276,283,290,295,307,317],{"__ignoreMap":126},[131,208,209,213],{"class":133,"line":134},[131,210,212],{"class":211},"swJcz","stages",[131,214,216],{"class":215},"sMK4o",":\n",[131,218,219,222,225,228],{"class":133,"line":140},[131,220,221],{"class":215},"  -",[131,223,224],{"class":211}," name",[131,226,227],{"class":215},":",[131,229,231],{"class":230},"sfazB"," Reserve IDs\n",[131,233,234,237,239],{"class":133,"line":146},[131,235,236],{"class":211},"    kind",[131,238,227],{"class":215},[131,240,241],{"class":230}," reserve_variables\n",[131,243,245,248,250,253,256,259,262],{"class":133,"line":244},4,[131,246,247],{"class":211},"    variables",[131,249,227],{"class":215},[131,251,252],{"class":215}," [",[131,254,255],{"class":230},"infuse_id",[131,257,258],{"class":215},",",[131,260,261],{"class":230}," serial_number",[131,263,264],{"class":215},"]\n",[131,266,268,271,273],{"class":133,"line":267},5,[131,269,270],{"class":211},"    record_version",[131,272,227],{"class":215},[131,274,275],{"class":230}," v2\n",[131,277,279],{"class":133,"line":278},6,[131,280,282],{"emptyLinePlaceholder":281},true,"\n",[131,284,286],{"class":133,"line":285},7,[131,287,289],{"class":288},"sHwdD","  # Program and validate the device with the reserved values here.\n",[131,291,293],{"class":133,"line":292},8,[131,294,282],{"emptyLinePlaceholder":281},[131,296,298,300,302,304],{"class":133,"line":297},9,[131,299,221],{"class":215},[131,301,224],{"class":211},[131,303,227],{"class":215},[131,305,306],{"class":230}," Commit IDs\n",[131,308,310,312,314],{"class":133,"line":309},10,[131,311,236],{"class":211},[131,313,227],{"class":215},[131,315,316],{"class":230}," commit_variables\n",[131,318,320,322,324,326,328,330,332],{"class":133,"line":319},11,[131,321,247],{"class":211},[131,323,227],{"class":215},[131,325,252],{"class":215},[131,327,255],{"class":230},[131,329,258],{"class":215},[131,331,261],{"class":230},[131,333,264],{"class":215},[105,335,336,337,340,341,344,345,348],{},"Reservations do not expire automatically. If a stage fails after reservation, investigate the DUT and reconcile any external programming or registration before retrying. A claimed linked row stays with that DUT and cannot be released for reuse. The ",[109,338,339],{},"DUT records",", ",[109,342,343],{},"Pool rows",", and ",[109,346,347],{},"Assignment history"," tabs show the values, row status, and audit trail.",[350,351,354],"callout",{"color":352,"icon":353},"warning","i-lucide-triangle-alert",[105,355,356],{},"If an external programming or registration call times out, confirm whether it consumed the ID before retrying.",[358,359,360],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":126,"searchDepth":134,"depth":140,"links":362},[363],{"id":173,"depth":140,"text":174},"Import, reserve, commit, and trace production identifiers.","md",null,{},{"icon":71},{"title":68,"description":364},"IqPJTGILDXd6FWq5MLjZMiBvqfYwm-Jua9T5xjHRktg",[372,374],{"title":63,"path":64,"stem":65,"description":373,"icon":66,"children":-1},"Zip a HEX file, upload it as an application version, download it, and use it in a station plan.",{"title":73,"path":74,"stem":75,"description":375,"icon":76,"children":-1},"See station health and investigate test outcomes.",1790376318215]