[{"data":1,"prerenderedAt":194},["ShallowReactive",2],{"navigation":3,"\u002Fstation-runtime\u002Fcustom-stages":99,"\u002Fstation-runtime\u002Fcustom-stages-surround":189},[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":41,"body":101,"description":182,"extension":183,"links":184,"meta":185,"navigation":186,"path":42,"seo":187,"stem":43,"__hash__":188},"docs\u002F3.station-runtime\u002F3.custom-stages.md",{"type":102,"value":103,"toc":180},"minimark",[104,108,116,170,173,176],[105,106,107],"p",{},"Built-in stages cover common actions such as printing, programming, validation, and HTTP calls. A product can register its own stage factory when a jig needs logic specific to its hardware.",[105,109,110,111,115],{},"The sample runtime constructs a ",[112,113,114],"code",{},"BasicStation"," with a map of custom stage kinds:",[117,118,123],"pre",{"className":119,"code":120,"language":121,"meta":122,"style":122},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from embeint_htf_station.stages import StageFactory\nfrom embeint_htf_station.stations import BasicStation\n\nstage_factories: dict[str, StageFactory] = {\n    # \"my-stage-kind\": MyStage,\n}\nstation = BasicStation(settings, stage_factories=stage_factories)\n","python","",[112,124,125,133,139,146,152,158,164],{"__ignoreMap":122},[126,127,130],"span",{"class":128,"line":129},"line",1,[126,131,132],{},"from embeint_htf_station.stages import StageFactory\n",[126,134,136],{"class":128,"line":135},2,[126,137,138],{},"from embeint_htf_station.stations import BasicStation\n",[126,140,142],{"class":128,"line":141},3,[126,143,145],{"emptyLinePlaceholder":144},true,"\n",[126,147,149],{"class":128,"line":148},4,[126,150,151],{},"stage_factories: dict[str, StageFactory] = {\n",[126,153,155],{"class":128,"line":154},5,[126,156,157],{},"    # \"my-stage-kind\": MyStage,\n",[126,159,161],{"class":128,"line":160},6,[126,162,163],{},"}\n",[126,165,167],{"class":128,"line":166},7,[126,168,169],{},"station = BasicStation(settings, stage_factories=stage_factories)\n",[105,171,172],{},"Add the stage implementation to your station application, register its kind, then use that kind in the YAML plan. Keep pass and fail criteria explicit and make each stage report enough context to diagnose a failed DUT without rerunning it blindly.",[105,174,175],{},"Use the samples in your station repository checkout as the current reference for stage configuration and runtime APIs.",[177,178,179],"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);}",{"title":122,"searchDepth":129,"depth":135,"links":181},[],"Extend a station with product-specific test logic.","md",null,{},{"icon":44},{"title":41,"description":182},"v1sNLUa6vPBVyr2a_ypt0KDY0Ks7ltZH46h-XWXo0o0",[190,192],{"title":36,"path":37,"stem":38,"description":191,"icon":39,"children":-1},"Define station identity, programmers, and stages in YAML.",{"title":46,"path":47,"stem":48,"description":193,"icon":49,"children":-1},"Provision each station independently and handle sensitive values safely.",1790376318215]