import proberun = probe.init(project="folding", experiment="dockq", question="temp 0.7 wins")# or, with no ambient binding:client = probe.Client()run = client.run(project="folding", experiment="dockq", name="run-1")
RUN=$(probe run start --experiment dockq --project folding \ --name run-1 --description "DockQ baseline at temperature 0.7" \ --source runpod --external-id rp-9931 \ --config lr=3e-4 --config batch=64 --tag baseline)
The CLI never creates.probe run start opens a run inside an experiment that already exists, or directly under a project. A slug that is a near-miss of an existing one is refused, not created — on the CLI the slug is hand-typed every time, and that is where typos come from. Use probe project create / probe experiment create explicitly.The SDK does create, because a training script should not fail on a missing row.
Omit --name and the server names the run after its slug, or after the petname it mints when there is none — then replaces that with a generated title once the run reaches a terminal status. A name you supply is yours and is never overwritten.
Omit --experiment entirely. The run hangs off the project with no experiment in between. That is the honest home for work that has no hypothesis, and it is the shape a Weights & Biases import lands in.
A run descended from this one: fork, resume, retry or branch. The relation is required.
fork
probe run fork $RUN --step 4000
A new run continuing the source from a checkpoint step. The source stays untouched.
group
probe run start --group $GROUP
A peer in a sweep, ensemble or distributed job.
A run that consumed another’s output — an eval of its checkpoint, an SFT run over its rollouts — is not its child. Record that as a use (probe checkpoint use ... --role eval, see datasets) or a lineage edge (probe edge add --relation evaluates_on).
probe exec --project folding -- python train.py --config dockq.yamlprobe exec $RUN -- python train.py # or attach to a run you already opened
probe exec opens the run itself, holds it with a heartbeat for as long as the child lives, and closes it from the child’s real exit code. It hands the child PROBE_RUN_ID and PROBE_RUN_EPOCH, and probe.init() inside the job reads them and joins that same run — so wrapping a script that already calls probe.init() produces one run, not two.
sbatch, ray job submit and modal deploy are detected. Those commands return as soon as the job is submitted, so recording the submitter’s exit code as the job’s outcome would be a lie. Probe opens the run awaiting attach instead, and the job claims it when it starts.
probe run end $RUN --status completed # completed | failed | crashed | canceledprobe run check $RUN # capture completeness; exit 2 if incomplete
probe run end is the delivery barrier: it blocks until everything queued for that run has actually been delivered, unless you pass --async. That is what makes “the run is closed” mean “the data is there”.From the SDK, probe.finish() does the same. A script that exits without calling it is still closed at exit as completed, failed or canceled.
SDK-created runs heartbeat every 60 seconds, so the server can reap a run whose process vanished rather than leaving it running forever. Tune with PROBE_HEARTBEAT_SECONDS; <=0 disables it.When a run crashes or fails, Probe emails a postmortem: a timeline of what the run’s telemetry showed before it broke — step time, GPU temperature, loss spikes, memory pressure, learning-rate trouble — where in the execution it stopped (training/epoch-7 > step 41300) and the signal that ended it (killed by SIGKILL).
probe get $RUN # the run recordprobe bundle $RUN # run + series + artifacts in one readprobe run list --experiment dockq --tag baselineprobe run series $RUN # per-series summary: key/kind/dimensions + first/last/min/maxprobe run metrics $RUN # raw pointsprobe events $RUN # backend lifecycle eventsprobe coordinates $RUN # every coordinate any fact landed on
probe run set $RUN --name "DockQ baseline" --description "Stable reference run"probe run set $RUN --notes "the verifier was broken before step 900; scores below it are not comparable"probe run set $RUN --status failed # correct a FINISHED run's statusprobe link $RUN --set wandb_run_id=abc --set gpu_job=rp-9931
A description says what the run is. --notes says what a later reader should distrust about it, and is usually learned after the run finished; it replaces the run’s notes (see notes to append instead). A run has no Overview page of its own: its experiment’s summary is the write-up.--status corrects a finished run’s record and keeps its start and end times; failed emails the run’s launcher. To close a run that is still running, use probe run end.probe link attaches foreign keys under metadata.foreign_keys — how a Probe run stays joinable to the scheduler, tracker or ticket it came from.
probe run start --external-id rp-9931 --rewind-to-step 4000
Rewind discards the incumbent run’s record from that step onward and rewrites it, unlocking a completed incumbent to do so. Without the flag nothing is ever deleted — a re-push against an existing external id is rejected rather than allowed to overwrite history quietly.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Probe Research","description":"Probe Research is the system of record for a team's ML work — projects, experiments, runs, metrics, artifacts, notes and coding-agent sessions, with semantic search over all of it.","colors":{"primary":"#1b1c1a","light":"#faf9f5","dark":"#1b1c1a"},"logo":{"light":"https://mintcdn.com/probe/frAHS0hkKnXGgKY1/logo/light.svg?fit=max\u0026auto=format\u0026n=frAHS0hkKnXGgKY1\u0026q=85\u0026s=3e3d470d6c5ca86844de9978bf1064cf","dark":"https://mintcdn.com/probe/frAHS0hkKnXGgKY1/logo/dark.svg?fit=max\u0026auto=format\u0026n=frAHS0hkKnXGgKY1\u0026q=85\u0026s=fe51261e1ec0727f060d4438310d7006"},"favicon":"https://mintcdn.com/probe/frAHS0hkKnXGgKY1/favicon.svg?fit=max\u0026auto=format\u0026n=frAHS0hkKnXGgKY1\u0026q=85\u0026s=b294cc1b88961f46a7913344947ed161","appearance":{"default":"light","strict":false},"background":{"color":{"light":"#faf9f5","dark":"#000000"}},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://research.prbe.ai"}},"footer":{"socials":{"github":"https://github.com/prbe-ai/research-os-agent"}},"seo":{},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"probe","hasAudioNarration":false,"actualSubdomain":"probe","customDomains":["docs.prbe.ai"],"gitSource":{"type":"github","owner":"prbe-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad59cb45382a269c562d1a6","collectionId":"942d9ee8-e65c-4f24-b33a-06ad79e614de","liveDeploymentHistoryId":"6ad59cb45382a269c562d1a6","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad59cb45382a269c562d1a6","clientVersion":"0.0.3939","searchFilterCounts":[{"language":"default","tag":"Tracking your work","count":10},{"language":"default","tag":"Coding agents","count":8},{"language":"default","tag":"Dashboard","count":8},{"language":"default","tag":"Setup wizard","count":8},{"language":"default","tag":"Integrations and imports","count":5},{"language":"default","tag":"CLI","count":4},{"language":"default","tag":"Getting started","count":4},{"language":"default","tag":"Reference","count":3},{"language":"default","tag":"Python SDK","count":3},{"language":"default","tag":"Deploy and operate","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"tracking/runs","slug":"/tracking/runs","pageMetadata":{"title":"Runs","description":"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.","icon":"play","href":"/tracking/runs"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,CodeGroup,Heading,Info,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A run is one execution. Everything else — metrics, files, spans, code — hangs off it.`}),`\n`,_jsx(Heading,{level:`2`,id:`opening-one`,children:`Opening one`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`SDK`,numberOfLines:`6`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` probe`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`run `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` probe.init(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"folding\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`experiment`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dockq\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`question`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"temp 0.7 wins\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# or, with no ambient binding:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` probe.Client()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`run `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.run(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"folding\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`experiment`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dockq\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"run-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`CLI`,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`RUN`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --experiment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dockq`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` folding`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run-1`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --description`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"DockQ baseline at temperature 0.7\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --source`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` runpod`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --external-id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rp-9931`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` lr=3e-4`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` batch=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`64`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --tag`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` baseline`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})})]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The CLI never creates.`}),` `,_jsx(_components.code,{children:`probe run start`}),` opens a run inside an experiment that already exists, or directly under a project. A slug that is a near-miss of an existing one is `,_jsx(_components.strong,{children:`refused`}),`, not created — on the CLI the slug is hand-typed every time, and that is where typos come from. Use `,_jsx(_components.code,{children:`probe project create`}),` / `,_jsx(_components.code,{children:`probe experiment create`}),` explicitly.`]}),_jsx(_components.p,{children:`The SDK does create, because a training script should not fail on a missing row.`})]}),`\n`,_jsx(Heading,{level:`3`,id:`naming`,children:`Naming`}),`\n`,_jsxs(_components.p,{children:[`Omit `,_jsx(_components.code,{children:`--name`}),` and the server names the run after its slug, or after the petname it mints when there is none — then replaces that with a generated title once the run reaches a terminal status. `,_jsx(_components.strong,{children:`A name you supply is yours and is never overwritten.`})]}),`\n`,_jsx(Heading,{level:`3`,id:`project-direct-runs`,children:`Project-direct runs`}),`\n`,_jsxs(_components.p,{children:[`Omit `,_jsx(_components.code,{children:`--experiment`}),` entirely. The run hangs off the project with no experiment in between. That is the honest home for work that has no hypothesis, and it is the shape a Weights \u0026 Biases import lands in.`]}),`\n`,_jsx(Heading,{level:`2`,id:`relationships`,children:`Relationships`}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsxs(Card,{title:`child`,icon:`sitemap`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` child`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --relation`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` retry`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`A run descended from this one: `,_jsx(_components.code,{children:`fork`}),`, `,_jsx(_components.code,{children:`resume`}),`, `,_jsx(_components.code,{children:`retry`}),` or `,_jsx(_components.code,{children:`branch`}),`. The relation is required.`]})]}),_jsxs(Card,{title:`fork`,icon:`code-branch`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` fork`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --step`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 4000`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`A new run continuing the source from a checkpoint step. `,_jsx(_components.strong,{children:`The source stays untouched.`})]})]}),_jsxs(Card,{title:`group`,icon:`layer-group`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --group`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $GROUP`})]}),`\n`]})})}),_jsx(_components.p,{children:`A peer in a sweep, ensemble or distributed job.`})]})]}),`\n`,_jsxs(_components.p,{children:[`A run that `,_jsx(_components.strong,{children:`consumed`}),` another’s output — an eval of its checkpoint, an SFT run over its rollouts — is not its child. Record that as a use (`,_jsx(_components.code,{children:`probe checkpoint use ... --role eval`}),`, see `,_jsx(_components.a,{href:`/tracking/datasets#what-a-run-used`,children:`datasets`}),`) or a lineage edge (`,_jsx(_components.code,{children:`probe edge add --relation evaluates_on`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`wrapping-a-command`,children:`Wrapping a command`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` exec`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` folding`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` python`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` train.py`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dockq.yaml`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` exec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` python`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` train.py`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # or attach to a run you already opened`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`probe exec`}),` opens the run itself, holds it with a heartbeat for as long as the child lives, and closes it from the child’s `,_jsx(_components.strong,{children:`real exit code`}),`. It hands the child `,_jsx(_components.code,{children:`PROBE_RUN_ID`}),` and `,_jsx(_components.code,{children:`PROBE_RUN_EPOCH`}),`, and `,_jsx(_components.code,{children:`probe.init()`}),` inside the job reads them and joins that same run — so wrapping a script that already calls `,_jsx(_components.code,{children:`probe.init()`}),` produces one run, not two.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sbatch`}),`, `,_jsx(_components.code,{children:`ray job submit`}),` and `,_jsx(_components.code,{children:`modal deploy`}),` are detected. Those commands return as soon as the job is `,_jsx(_components.em,{children:`submitted`}),`, so recording the submitter’s exit code as the job’s outcome would be a lie. Probe opens the run `,_jsx(_components.strong,{children:`awaiting attach`}),` instead, and the job claims it when it starts.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`closing-one`,children:`Closing one`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` completed`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # completed | failed | crashed | canceled`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` check`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # capture completeness; exit 2 if incomplete`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`probe run end`}),` is the `,_jsx(_components.strong,{children:`delivery barrier`}),`: it blocks until everything queued for that run has actually been delivered, unless you pass `,_jsx(_components.code,{children:`--async`}),`. That is what makes “the run is closed” mean “the data is there”.`]}),`\n`,_jsxs(_components.p,{children:[`From the SDK, `,_jsx(_components.code,{children:`probe.finish()`}),` does the same. A script that exits without calling it is still closed at exit as `,_jsx(_components.code,{children:`completed`}),`, `,_jsx(_components.code,{children:`failed`}),` or `,_jsx(_components.code,{children:`canceled`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`when-the-process-dies`,children:`When the process dies`}),`\n`,_jsxs(_components.p,{children:[`SDK-created runs heartbeat every 60 seconds, so the server can reap a run whose process vanished rather than leaving it `,_jsx(_components.code,{children:`running`}),` forever. Tune with `,_jsx(_components.code,{children:`PROBE_HEARTBEAT_SECONDS`}),`; `,_jsx(_components.code,{children:`\u003c=0`}),` disables it.`]}),`\n`,_jsxs(_components.p,{children:[`When a run crashes or fails, Probe emails a postmortem: a timeline of what the run’s telemetry showed before it broke — step time, GPU temperature, loss spikes, memory pressure, learning-rate trouble — where in the execution it stopped (`,_jsx(_components.code,{children:`training/epoch-7 > step 41300`}),`) and the signal that ended it (`,_jsx(_components.code,{children:`killed by SIGKILL`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`reading-runs-back`,children:`Reading runs back`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # the run record`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # run + series + artifacts in one read`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --experiment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dockq`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --tag`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` baseline`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` series`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # per-series summary: key/kind/dimensions + first/last/min/max`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # raw points`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # backend lifecycle events`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` coordinates`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # every coordinate any fact landed on`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`amending`,children:`Amending`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"DockQ baseline\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --description`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Stable reference run\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --notes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"the verifier was broken before step 900; scores below it are not comparable\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` failed`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # correct a FINISHED run's status`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` link`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $RUN`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` wandb_run_id=abc`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gpu_job=rp-9931`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A description says what the run `,_jsx(_components.em,{children:`is`}),`. `,_jsx(_components.code,{children:`--notes`}),` says what a later reader should `,_jsx(_components.em,{children:`distrust`}),` about it, and is usually learned after the run finished; it replaces the run’s notes (see `,_jsx(_components.a,{href:`/tracking/notes`,children:`notes`}),` to append instead). A run has no Overview page of its own: its experiment’s `,_jsx(_components.a,{href:`/tracking/summaries`,children:`summary`}),` is the write-up.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--status`}),` corrects a finished run’s record and keeps its start and end times; `,_jsx(_components.code,{children:`failed`}),` emails the run’s launcher. To close a run that is still running, use `,_jsx(_components.code,{children:`probe run end`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`probe link`}),` attaches foreign keys under `,_jsx(_components.code,{children:`metadata.foreign_keys`}),` — how a Probe run stays joinable to the scheduler, tracker or ticket it came from.`]}),`\n`,_jsx(Heading,{level:`2`,id:`relaunching-from-a-checkpoint`,children:`Relaunching from a checkpoint`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`probe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --external-id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rp-9931`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rewind-to-step`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 4000`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Rewind discards the incumbent run’s record `,_jsx(_components.strong,{children:`from that step onward`}),` and rewrites it, unlocking a completed incumbent to do so. Without the flag nothing is ever deleted — a re-push against an existing external id is rejected rather than allowed to overwrite history quietly.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Runs","description":"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.","icon":"play","href":"/tracking/runs"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Opening one","slug":"opening-one","depth":2,"children":[{"title":"Naming","slug":"naming","depth":3,"children":[]},{"title":"Project-direct runs","slug":"project-direct-runs","depth":3,"children":[]}]},{"title":"Relationships","slug":"relationships","depth":2,"children":[]},{"title":"Wrapping a command","slug":"wrapping-a-command","depth":2,"children":[]},{"title":"Closing one","slug":"closing-one","depth":2,"children":[{"title":"When the process dies","slug":"when-the-process-dies","depth":3,"children":[]}]},{"title":"Reading runs back","slug":"reading-runs-back","depth":2,"children":[]},{"title":"Amending","slug":"amending","depth":2,"children":[]},{"title":"Relaunching from a checkpoint","slug":"relaunching-from-a-checkpoint","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"probe","siteName":"Probe Research","title":"Runs - Probe Research","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T04:29:45.237Z","originalFileLocation":"tracking/runs.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Probe Research\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Runs - Probe Research\">\u003cmeta data-mint-head property=\"og:description\" content=\"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Probe Research\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.prbe.ai/tracking/runs\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://probe.mintlify.app/_mintlify/api/og/v2?division=Tracking+your+work\u0026amp;title=Runs\u0026amp;description=Open%2C+hold%2C+fork%2C+wrap+and+close+a+run+%E2%80%94+and+what+happens+when+the+process+dies+instead.\u0026amp;theme=a8e40fb0d6b9c223af821a5d\u0026amp;signature=161ee6e6f95c118b46a8f2fdb0fbbaee3eb3e0d2b56340d62cb060bbac90c34b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Runs - Probe Research\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://probe.mintlify.app/_mintlify/api/og/v2?division=Tracking+your+work\u0026amp;title=Runs\u0026amp;description=Open%2C+hold%2C+fork%2C+wrap+and+close+a+run+%E2%80%94+and+what+happens+when+the+process+dies+instead.\u0026amp;theme=a8e40fb0d6b9c223af821a5d\u0026amp;signature=161ee6e6f95c118b46a8f2fdb0fbbaee3eb3e0d2b56340d62cb060bbac90c34b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/probe/4ypKDS3cRTh5Q5OH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Probe Research\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1b1c1a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.prbe.ai/tracking/runs\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/tracking/runs.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.prbe.ai/#organization\",\"name\":\"Probe Research\",\"url\":\"https://docs.prbe.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/probe/frAHS0hkKnXGgKY1/logo/light.svg?fit=max\u0026auto=format\u0026n=frAHS0hkKnXGgKY1\u0026q=85\u0026s=3e3d470d6c5ca86844de9978bf1064cf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.prbe.ai#website\",\"name\":\"Probe Research\",\"url\":\"https://docs.prbe.ai\",\"publisher\":{\"@id\":\"https://docs.prbe.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.prbe.ai/tracking/runs#webpage\",\"url\":\"https://docs.prbe.ai/tracking/runs\",\"name\":\"Runs\",\"description\":\"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\",\"dateModified\":\"2026-10-19T04:29:45.237Z\",\"isPartOf\":{\"@id\":\"https://docs.prbe.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.prbe.ai/tracking/runs#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.prbe.ai/tracking/runs#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tracking your work\",\"item\":\"https://docs.prbe.ai/tracking/projects\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Runs\",\"item\":\"https://docs.prbe.ai/tracking/runs\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.prbe.ai/tracking/runs#article\",\"headline\":\"Runs\",\"name\":\"Runs\",\"description\":\"Open, hold, fork, wrap and close a run — and what happens when the process dies instead.\",\"url\":\"https://docs.prbe.ai/tracking/runs\",\"mainEntityOfPage\":{\"@id\":\"https://docs.prbe.ai/tracking/runs#webpage\"},\"dateModified\":\"2026-10-19T04:29:45.237Z\",\"publisher\":{\"@id\":\"https://docs.prbe.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.prbe.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Probe Research\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Probe Research","nav":{"global":null,"pages":[{"group":"Getting started","icon":"flag","expanded":true,"pages":[{"title":"Probe Research","sidebarTitle":"Introduction","icon":"house","href":"/index"},{"title":"Installation","icon":"download","href":"/installation"},{"title":"Quickstart","icon":"rocket","href":"/quickstart"},{"title":"Core concepts","icon":"diagram-project","href":"/concepts"}]},{"group":"Setup wizard","icon":"wand-magic-sparkles","expanded":true,"pages":[{"title":"The wizard","sidebarTitle":"Overview","icon":"wand-magic-sparkles","href":"/wizard/overview"},{"title":"Install Probe","icon":"download","href":"/wizard/install"},{"title":"Import research work","icon":"box-archive","href":"/wizard/import"},{"title":"Existing imports","icon":"list-check","href":"/wizard/imports"},{"title":"Settings","icon":"sliders","href":"/wizard/settings"},{"title":"Accounts","icon":"user","href":"/wizard/account"},{"title":"Diagnose and repair","icon":"stethoscope","href":"/wizard/diagnose"},{"title":"Unattended use","icon":"code","href":"/wizard/flags"}]},{"group":"Tracking your work","icon":"flask","pages":[{"title":"Projects and experiments","description":"Create, organise, tag, nest, freeze and delete the structures runs live in.","icon":"folder-tree","href":"/tracking/projects"},{"title":"Runs","icon":"play","href":"/tracking/runs"},{"title":"Metrics","description":"Curves, scalars and breakdowns — and how to pick the shape before you log the first point.","icon":"chart-line","href":"/tracking/metrics"},{"title":"Artifacts and files","icon":"folder","href":"/tracking/artifacts"},{"title":"Datasets, sources and checkpoints","sidebarTitle":"Datasets","icon":"database","href":"/tracking/datasets"},{"title":"Code capture and reproduction","icon":"camera","href":"/tracking/snapshots"},{"title":"Spans, trajectories and trials","icon":"timeline","href":"/tracking/trajectories"},{"title":"Notes and documents","icon":"pen","href":"/tracking/notes"},{"title":"Summaries and Overview pages","sidebarTitle":"Summaries","icon":"file-lines","href":"/tracking/summaries"},{"title":"Papers","icon":"book-open","href":"/tracking/papers"}]},{"group":"Python SDK","icon":"python","pages":[{"title":"SDK quickstart","sidebarTitle":"Quickstart","icon":"play","href":"/sdk/quickstart"},{"title":"API reference","icon":"book","href":"/sdk/reference"},{"title":"Framework integrations","icon":"plug","href":"/sdk/integrations"}]},{"group":"CLI","icon":"terminal","pages":[{"title":"CLI overview","sidebarTitle":"Overview","icon":"terminal","href":"/cli/overview"},{"title":"Authentication and accounts","icon":"key","sidebarTitle":"Auth and accounts","href":"/cli/auth"},{"title":"Command reference","icon":"list","href":"/cli/commands"},{"title":"The outbox","icon":"inbox","href":"/cli/outbox"}]},{"group":"Coding agents","icon":"robot","pages":[{"title":"Coding agents","sidebarTitle":"Overview","icon":"robot","href":"/agents/overview"},{"title":"The Probe daemon","sidebarTitle":"Probe daemon","icon":"microchip","href":"/agents/daemon"},{"title":"Skills","icon":"wand-magic-sparkles","href":"/agents/skills"},{"title":"Keep folders out of Probe","sidebarTitle":".probe.config","icon":"eye-slash","href":"/agents/probe-config"},{"title":"MCP server","icon":"plug","href":"/agents/mcp"},{"title":"Session capture","icon":"message","href":"/agents/capture"},{"title":"Status line","icon":"bars","href":"/agents/statusline"},{"title":"Capy","icon":"cloud","href":"/agents/capy"}]},{"group":"Dashboard","icon":"browser","pages":[{"title":"The dashboard","sidebarTitle":"Overview","icon":"browser","href":"/dashboard/overview"},{"title":"Projects","icon":"folder-tree","href":"/dashboard/projects"},{"title":"Experiments and runs","icon":"flask","href":"/dashboard/experiments-runs"},{"title":"Charts","icon":"chart-line","href":"/dashboard/charts"},{"title":"Data","icon":"database","href":"/dashboard/data"},{"title":"Search and knowledge","icon":"magnifying-glass","href":"/dashboard/search"},{"title":"Assistant","icon":"sparkles","href":"/dashboard/assistant"},{"title":"Workspaces, team and settings","icon":"users","href":"/dashboard/workspaces"}]},{"group":"Integrations and imports","icon":"right-left","pages":[{"title":"Integrations","sidebarTitle":"Overview","icon":"right-left","href":"/integrations/overview"},{"title":"Weights \u0026 Biases","icon":"chart-line","href":"/integrations/wandb"},{"title":"GitHub","icon":"github","href":"/integrations/github"},{"title":"Benchling","icon":"flask","href":"/integrations/benchling"},{"title":"Backfill","icon":"clock-rotate-left","href":"/integrations/backfill"}]},{"group":"Deploy and operate","icon":"server","pages":[{"title":"Architecture","icon":"sitemap","href":"/deploy/architecture"},{"title":"Self-hosting","icon":"server","href":"/deploy/self-host"}]},{"group":"Reference","icon":"book","pages":[{"title":"Environment variables","icon":"gear","href":"/reference/environment"},{"title":"Troubleshooting","icon":"wrench","href":"/reference/troubleshooting"},{"title":"Glossary","icon":"book-bookmark","href":"/reference/glossary"}]}]},"title":"Runs - Probe Research","buildId":"dpl_5UDDZ9hnigTkoV7QtvQ39eUp84nu","deploymentId":"dpl_5UDDZ9hnigTkoV7QtvQ39eUp84nu","dynamics":[],"chunks":[]}