[{"data":1,"prerenderedAt":878},["ShallowReactive",2],{"navigation":3,"\u002Finstallation\u002Fverification":194,"\u002Finstallation\u002Fverification-surround":873},[4,18,31,64,81,102,111,132,149],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting started","\u002Fgetting-started","1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Run your first workflow","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Core concepts","\u002Fconcepts","2.concepts",[23,27],{"title":24,"path":25,"stem":26},"The platform model","\u002Fconcepts\u002Fplatform","2.concepts\u002F1.platform",{"title":28,"path":29,"stem":30},"Architecture and boundaries","\u002Fconcepts\u002Farchitecture","2.concepts\u002F2.architecture",{"title":32,"path":33,"stem":34,"children":35,"page":17},"Installation","\u002Finstallation","3.installation",[36,40,44,48,52,56,60],{"title":37,"path":38,"stem":39},"Overview and requirements","\u002Finstallation\u002Foverview","3.installation\u002F1.overview",{"title":41,"path":42,"stem":43},"Local evaluation","\u002Finstallation\u002Flocal-evaluation","3.installation\u002F2.local-evaluation",{"title":45,"path":46,"stem":47},"Install the server","\u002Finstallation\u002Fserver","3.installation\u002F3.server",{"title":49,"path":50,"stem":51},"Install a runner","\u002Finstallation\u002Frunner","3.installation\u002F4.runner",{"title":53,"path":54,"stem":55},"Verify the installation","\u002Finstallation\u002Fverification","3.installation\u002F5.verification",{"title":57,"path":58,"stem":59},"Upgrade the platform","\u002Finstallation\u002Fupgrades","3.installation\u002F6.upgrades",{"title":61,"path":62,"stem":63},"Guided installer","\u002Finstallation\u002Finstaller","3.installation\u002F7.installer",{"title":65,"path":66,"stem":67,"children":68,"page":17},"Build workflows","\u002Fworkflows","4.workflows",[69,73,77],{"title":70,"path":71,"stem":72},"Build a Definition","\u002Fworkflows\u002Fdefinitions","4.workflows\u002F0.definitions",{"title":74,"path":75,"stem":76},"Deploy and run workflows","\u002Fworkflows\u002Fruns","4.workflows\u002F1.runs",{"title":78,"path":79,"stem":80},"Inputs, context, and secrets","\u002Fworkflows\u002Finputs-and-secrets","4.workflows\u002F2.inputs-and-secrets",{"title":82,"path":83,"stem":84,"children":85,"page":17},"Run and recover","\u002Foperations","5.operations",[86,90,94,98],{"title":87,"path":88,"stem":89},"Monitor Runs","\u002Foperations\u002Fmonitoring","5.operations\u002F1.monitoring",{"title":91,"path":92,"stem":93},"Approve prepared steps","\u002Foperations\u002Fapprovals","5.operations\u002F2.approvals",{"title":95,"path":96,"stem":97},"Recover or cancel execution","\u002Foperations\u002Frecovery","5.operations\u002F3.recovery",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Foperations\u002Ftroubleshooting","5.operations\u002F4.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Action catalog","\u002Fcatalog","6.catalog",[107],{"title":108,"path":109,"stem":110},"Find and use Actions","\u002Fcatalog\u002Foverview","6.catalog\u002F1.overview",{"title":112,"path":113,"stem":114,"children":115,"page":17},"Administration","\u002Fadministration","7.administration",[116,120,124,128],{"title":117,"path":118,"stem":119},"Registries and Environments","\u002Fadministration\u002Fenvironments","7.administration\u002F2.environments",{"title":121,"path":122,"stem":123},"Manage runners","\u002Fadministration\u002Frunners","7.administration\u002F3.runners",{"title":125,"path":126,"stem":127},"Access and approval policies","\u002Fadministration\u002Faccess","7.administration\u002F4.access",{"title":129,"path":130,"stem":131},"Backups and upgrades","\u002Fadministration\u002Fmaintenance","7.administration\u002F5.maintenance",{"title":133,"path":134,"stem":135,"children":136,"page":17},"Develop Actions","\u002Factions","8.actions",[137,141,145],{"title":138,"path":139,"stem":140},"Build your first Action","\u002Factions\u002Fquickstart","8.actions\u002F1.quickstart",{"title":142,"path":143,"stem":144},"Local development","\u002Factions\u002Flocal-development","8.actions\u002F2.local-development",{"title":146,"path":147,"stem":148},"Publish an Action","\u002Factions\u002Fpublishing","8.actions\u002F3.publishing",{"title":150,"path":151,"stem":152,"children":153,"page":17},"Reference","\u002Freference","9.reference",[154,158,162,166,170,174,178,182,186,190],{"title":155,"path":156,"stem":157},"Operator CLI","\u002Freference\u002Foperator-cli","9.reference\u002F1.operator-cli",{"title":159,"path":160,"stem":161},"Installer CLI","\u002Freference\u002Finstaller-cli","9.reference\u002F10.installer-cli",{"title":163,"path":164,"stem":165},"Definition syntax","\u002Freference\u002Fdefinition","9.reference\u002F2.definition",{"title":167,"path":168,"stem":169},"CLI configuration","\u002Freference\u002Fconfiguration","9.reference\u002F3.configuration",{"title":171,"path":172,"stem":173},"API integration","\u002Freference\u002Fapi","9.reference\u002F4.api",{"title":175,"path":176,"stem":177},"Action CLI","\u002Freference\u002Faction-cli","9.reference\u002F5.action-cli",{"title":179,"path":180,"stem":181},"Action SDK","\u002Freference\u002Fsdk","9.reference\u002F6.sdk",{"title":183,"path":184,"stem":185},"Contracts and compatibility","\u002Freference\u002Fcontracts","9.reference\u002F7.contracts",{"title":187,"path":188,"stem":189},"Server configuration","\u002Freference\u002Fserver-configuration","9.reference\u002F8.server-configuration",{"title":191,"path":192,"stem":193},"Runner configuration","\u002Freference\u002Frunner-configuration","9.reference\u002F9.runner-configuration",{"id":195,"title":53,"body":196,"description":867,"extension":868,"meta":869,"navigation":870,"path":54,"seo":871,"stem":55,"__hash__":872},"docs\u002F3.installation\u002F5.verification.md",{"type":197,"value":198,"toc":857},"minimark",[199,203,208,233,248,264,268,271,283,288,303,354,361,364,378,393,397,400,443,463,481,485,557,571,586,590,671,691,698,705,730,737,740,744,842,853],[200,201,202],"p",{},"A responding server and an approved runner are the starting point. This guide checks the full path from registry inspection through Action execution to retained results. Use a harmless, known Action and a dedicated verification Environment.",[204,205,207],"h2",{"id":206},"check-the-services","Check the services",[209,210,216],"pre",{"className":211,"code":212,"filename":213,"language":214,"meta":215,"style":215},"language-sh shiki shiki-themes pyplines-light pyplines-light pyplines-dark","pyplines version\npyplines --json runner list\n","Terminal","sh","",[217,218,219,227],"code",{"__ignoreMap":215},[220,221,224],"span",{"class":222,"line":223},"line",1,[220,225,226],{},"pyplines version\n",[220,228,230],{"class":222,"line":229},2,[220,231,232],{},"pyplines --json runner list\n",[200,234,235,236,239,240,243,244,247],{},"Confirm the CLI is the selected tooling version. The runner must have ",[217,237,238],{},"admission: approved",", ",[217,241,242],{},"draining: false",", the intended pool, and a recent ",[217,245,246],{},"last_seen"," that continues to advance. Check the server and runner process\u002Fimage versions separately; they must match the selected platform release.",[200,249,250,251,254,255,259,260,263],{},"For the shared-installation guides, the API is ",[217,252,253],{},"https:\u002F\u002Fpyplines.example.com:8080",". For ",[256,257,258],"a",{"href":42},"local evaluation",", use ",[217,261,262],{},"https:\u002F\u002Flocalhost:29443",". Log in as the bootstrap administrator before continuing.",[204,265,267],{"id":266},"obtain-a-known-action","Obtain a known Action",[200,269,270],{},"If your team already publishes Actions, obtain an Action name, version, registry location, supported architecture, and input\u002Foutput contract from its maintainer. Use its supplied verification Definition or adapt the following example to that contract. Operators do not need to build an Action when one is already available.",[200,272,273,274,278,279,282],{},"The rest of this walkthrough uses the repository's ",[275,276,277],"strong",{},"echo"," example, published as ",[217,280,281],{},"echo@2026.10.3",". It simply returns its input message. This is a repository example, not an image guaranteed to exist in an official catalog.",[284,285,287],"h3",{"id":286},"optional-publish-the-echo-example","Optional: publish the echo example",[200,289,290,291,294,295,298,299,302],{},"An Action maintainer with Docker, uv, Python 3.14, GitHub CLI, and registry write access can prepare it. From a Pyplines repository checkout containing ",[217,292,293],{},"examples\u002Flocal\u002Factions\u002Fecho",", with ",[217,296,297],{},"TOOLING_TAG"," and ",[217,300,301],{},"TOOLING_VERSION"," selected:",[209,304,306],{"className":211,"code":305,"filename":213,"language":214,"meta":215,"style":215},"scripts\u002Fpyplines-action-installer.sh \"$TOOLING_TAG\" \"$PWD\u002F.local\u002Fbin\"\nmkdir -p .local\u002Finstallation-check\ncp -R examples\u002Flocal\u002Factions\u002Fecho .local\u002Finstallation-check\u002Fecho\nuv add --project .local\u002Finstallation-check\u002Fecho --python 3.14 --no-sync \\\n  \"pyplines==$TOOLING_VERSION\"\n.local\u002Fbin\u002Fpyplines-action registry login registry.example.com --username action-publisher\n.local\u002Fbin\u002Fpyplines-action push .local\u002Finstallation-check\u002Fecho \\\n  registry.example.com\u002Factions --platform linux\u002Famd64 --yes\n",[217,307,308,313,318,324,330,336,342,348],{"__ignoreMap":215},[220,309,310],{"class":222,"line":223},[220,311,312],{},"scripts\u002Fpyplines-action-installer.sh \"$TOOLING_TAG\" \"$PWD\u002F.local\u002Fbin\"\n",[220,314,315],{"class":222,"line":229},[220,316,317],{},"mkdir -p .local\u002Finstallation-check\n",[220,319,321],{"class":222,"line":320},3,[220,322,323],{},"cp -R examples\u002Flocal\u002Factions\u002Fecho .local\u002Finstallation-check\u002Fecho\n",[220,325,327],{"class":222,"line":326},4,[220,328,329],{},"uv add --project .local\u002Finstallation-check\u002Fecho --python 3.14 --no-sync \\\n",[220,331,333],{"class":222,"line":332},5,[220,334,335],{},"  \"pyplines==$TOOLING_VERSION\"\n",[220,337,339],{"class":222,"line":338},6,[220,340,341],{},".local\u002Fbin\u002Fpyplines-action registry login registry.example.com --username action-publisher\n",[220,343,345],{"class":222,"line":344},7,[220,346,347],{},".local\u002Fbin\u002Fpyplines-action push .local\u002Finstallation-check\u002Fecho \\\n",[220,349,351],{"class":222,"line":350},8,[220,352,353],{},"  registry.example.com\u002Factions --platform linux\u002Famd64 --yes\n",[200,355,356,357,360],{},"Choose ",[217,358,359],{},"linux\u002Farm64"," instead when verifying an arm64 runner. The selected tooling release must provide its SDK and Action base images. The publisher's registry credentials are separate from the server's read credentials configured below. For anonymous registries, skip login.",[200,362,363],{},"For the local evaluation appliance, replace the final login\u002Fpush commands with:",[209,365,367],{"className":211,"code":366,"filename":213,"language":214,"meta":215,"style":215},".local\u002Fbin\u002Fpyplines-action push .local\u002Finstallation-check\u002Fecho \\\n  localhost:25100 --platform linux\u002Famd64 --plain-http --yes\n",[217,368,369,373],{"__ignoreMap":215},[220,370,371],{"class":222,"line":223},[220,372,347],{},[220,374,375],{"class":222,"line":229},[220,376,377],{},"  localhost:25100 --platform linux\u002Famd64 --plain-http --yes\n",[200,379,380,381,384,385,388,389,392],{},"Again, select the runner's architecture. This publishes ",[217,382,383],{},"localhost:25100\u002Fecho:2026.10.3","; no repository prefix is used. If that version already exists with different bytes, use a new Action version in the copied ",[217,386,387],{},"pyproject.toml",", update its lock, and update ",[217,390,391],{},"uses"," in the Definition below.",[204,394,396],{"id":395},"configure-registry-access","Configure registry access",[200,398,399],{},"For a shared installation, save:",[209,401,406],{"className":402,"code":403,"filename":404,"language":405,"meta":215,"style":215},"language-yaml shiki shiki-themes pyplines-light pyplines-light pyplines-dark","name: verification-registry\nhost: registry.example.com\nplain_http: false\n","registry.yaml","yaml",[217,407,408,422,432],{"__ignoreMap":215},[220,409,410,414,418],{"class":222,"line":223},[220,411,413],{"class":412},"smnRP","name",[220,415,417],{"class":416},"sgMYo",":",[220,419,421],{"class":420},"sfDcV"," verification-registry\n",[220,423,424,427,429],{"class":222,"line":229},[220,425,426],{"class":412},"host",[220,428,417],{"class":416},[220,430,431],{"class":420}," registry.example.com\n",[220,433,434,437,439],{"class":222,"line":320},[220,435,436],{"class":412},"plain_http",[220,438,417],{"class":416},[220,440,442],{"class":441},"sFGQw"," false\n",[209,444,446],{"className":211,"code":445,"filename":213,"language":214,"meta":215,"style":215},"pyplines registry apply registry.yaml\npyplines registry login verification-registry --username automation-reader\npyplines registry info verification-registry\n",[217,447,448,453,458],{"__ignoreMap":215},[220,449,450],{"class":222,"line":223},[220,451,452],{},"pyplines registry apply registry.yaml\n",[220,454,455],{"class":222,"line":229},[220,456,457],{},"pyplines registry login verification-registry --username automation-reader\n",[220,459,460],{"class":222,"line":320},[220,461,462],{},"pyplines registry info verification-registry\n",[200,464,465,466,469,470,472,473,476,477,480],{},"Use credentials allowed to read the verification Action. Skip ",[217,467,468],{},"registry login"," if images are anonymously readable. For local evaluation, change ",[217,471,426],{}," to ",[217,474,475],{},"localhost:25100",", set ",[217,478,479],{},"plain_http: true",", and skip registry login.",[204,482,484],{"id":483},"create-the-verification-environment","Create the verification Environment",[209,486,489],{"className":402,"code":487,"filename":488,"language":405,"meta":215,"style":215},"name: installation-check\nregistry:\n  connection: verification-registry\n  prefix: actions\npool: local\nplatform: linux\u002Famd64\ncontext: {}\n","environment.yaml",[217,490,491,500,508,517,527,537,547],{"__ignoreMap":215},[220,492,493,495,497],{"class":222,"line":223},[220,494,413],{"class":412},[220,496,417],{"class":416},[220,498,499],{"class":420}," installation-check\n",[220,501,502,505],{"class":222,"line":229},[220,503,504],{"class":412},"registry",[220,506,507],{"class":416},":\n",[220,509,510,513,515],{"class":222,"line":320},[220,511,512],{"class":412},"  connection",[220,514,417],{"class":416},[220,516,421],{"class":420},[220,518,519,522,524],{"class":222,"line":326},[220,520,521],{"class":412},"  prefix",[220,523,417],{"class":416},[220,525,526],{"class":420}," actions\n",[220,528,529,532,534],{"class":222,"line":332},[220,530,531],{"class":412},"pool",[220,533,417],{"class":416},[220,535,536],{"class":420}," local\n",[220,538,539,542,544],{"class":222,"line":338},[220,540,541],{"class":412},"platform",[220,543,417],{"class":416},[220,545,546],{"class":420}," linux\u002Famd64\n",[220,548,549,552,554],{"class":222,"line":344},[220,550,551],{"class":412},"context",[220,553,417],{"class":416},[220,555,556],{"class":416}," {}\n",[200,558,559,560,566,567,570],{},"Choose the runner's architecture. For local evaluation, ",[275,561,562,563],{},"remove ",[217,564,565],{},"prefix: actions"," because the example was published directly at the registry root. The echo Action needs no network or secrets. For other Actions, configure their required context, secrets, and network before execution; see ",[256,568,569],{"href":118},"Environment administration",".",[209,572,574],{"className":211,"code":573,"filename":213,"language":214,"meta":215,"style":215},"pyplines environment apply environment.yaml\npyplines environment info installation-check\n",[217,575,576,581],{"__ignoreMap":215},[220,577,578],{"class":222,"line":223},[220,579,580],{},"pyplines environment apply environment.yaml\n",[220,582,583],{"class":222,"line":229},[220,584,585],{},"pyplines environment info installation-check\n",[204,587,589],{"id":588},"deploy-and-execute","Deploy and execute",[209,591,594],{"className":402,"code":592,"filename":593,"language":405,"meta":215,"style":215},"apiVersion: pyplines\u002Fv1\nkind: Definition\nname: installation-check\nsteps:\n  - name: echo\n    uses: echo@2026.10.3\n    with:\n      message: Pyplines installation verified\n","verification.yaml",[217,595,596,606,616,624,631,644,654,661],{"__ignoreMap":215},[220,597,598,601,603],{"class":222,"line":223},[220,599,600],{"class":412},"apiVersion",[220,602,417],{"class":416},[220,604,605],{"class":420}," pyplines\u002Fv1\n",[220,607,608,611,613],{"class":222,"line":229},[220,609,610],{"class":412},"kind",[220,612,417],{"class":416},[220,614,615],{"class":420}," Definition\n",[220,617,618,620,622],{"class":222,"line":320},[220,619,413],{"class":412},[220,621,417],{"class":416},[220,623,499],{"class":420},[220,625,626,629],{"class":222,"line":326},[220,627,628],{"class":412},"steps",[220,630,507],{"class":416},[220,632,633,636,639,641],{"class":222,"line":332},[220,634,635],{"class":416},"  -",[220,637,638],{"class":412}," name",[220,640,417],{"class":416},[220,642,643],{"class":420}," echo\n",[220,645,646,649,651],{"class":222,"line":338},[220,647,648],{"class":412},"    uses",[220,650,417],{"class":416},[220,652,653],{"class":420}," echo@2026.10.3\n",[220,655,656,659],{"class":222,"line":344},[220,657,658],{"class":412},"    with",[220,660,507],{"class":416},[220,662,663,666,668],{"class":222,"line":350},[220,664,665],{"class":412},"      message",[220,667,417],{"class":416},[220,669,670],{"class":420}," Pyplines installation verified\n",[209,672,674],{"className":211,"code":673,"filename":213,"language":214,"meta":215,"style":215},"pyplines validate verification.yaml\npyplines deploy verification.yaml --environment installation-check --as verify\npyplines run start installation-check\u002Fverify --wait\n",[217,675,676,681,686],{"__ignoreMap":215},[220,677,678],{"class":222,"line":223},[220,679,680],{},"pyplines validate verification.yaml\n",[220,682,683],{"class":222,"line":229},[220,684,685],{},"pyplines deploy verification.yaml --environment installation-check --as verify\n",[220,687,688],{"class":222,"line":320},[220,689,690],{},"pyplines run start installation-check\u002Fverify --wait\n",[200,692,693,694,697],{},"Deployment must resolve the Action from the configured registry and pin its digest. If an existing policy requires approval, follow ",[256,695,696],{"href":92},"the approval procedure","; do not weaken the policy to make this check pass.",[200,699,700,701,704],{},"Replace ",[217,702,703],{},"RUN_ID"," with the returned Run ID:",[209,706,708],{"className":211,"code":707,"filename":213,"language":214,"meta":215,"style":215},"pyplines run info RUN_ID\npyplines run attempts RUN_ID\npyplines run history RUN_ID\npyplines run logs RUN_ID echo\n",[217,709,710,715,720,725],{"__ignoreMap":215},[220,711,712],{"class":222,"line":223},[220,713,714],{},"pyplines run info RUN_ID\n",[220,716,717],{"class":222,"line":229},[220,718,719],{},"pyplines run attempts RUN_ID\n",[220,721,722],{"class":222,"line":320},[220,723,724],{},"pyplines run history RUN_ID\n",[220,726,727],{"class":222,"line":326},[220,728,729],{},"pyplines run logs RUN_ID echo\n",[200,731,732,733,736],{},"For the echo example, expect a successful Run, an output message of ",[217,734,735],{},"Pyplines installation verified",", and its Action log. This exercises registry inspection, dispatch, runner image pulls, the work-volume mounts, and result\u002Flog reporting. It does not test connectivity or credentials needed by unrelated operational Actions.",[200,738,739],{},"Once the Run has settled, a controlled service restart should preserve the Run evidence and the runner's identity. Confirm both before handing the installation to users.",[204,741,743],{"id":742},"diagnose-a-failed-check","Diagnose a failed check",[745,746,747,760],"table",{},[748,749,750],"thead",{},[751,752,753,757],"tr",{},[754,755,756],"th",{},"Symptom",[754,758,759],{},"Check",[761,762,763,772,780,790,798,816,830],"tbody",{},[751,764,765,769],{},[766,767,768],"td",{},"TLS or login failure",[766,770,771],{},"API URL and port, certificate hostname, CA trust, and CLI session",[751,773,774,777],{},[766,775,776],{},"Runner remains pending",[766,778,779],{},"Approve the correct runner ID; verify the enrollment's pool",[751,781,782,787],{},[766,783,784,785],{},"Approved runner stops updating ",[217,786,246],{},[766,788,789],{},"Advertised NATS hostname\u002Fport, CA trust, runner logs, and Docker connection",[751,791,792,795],{},[766,793,794],{},"Deployment cannot inspect the Action",[766,796,797],{},"Registry host\u002Fprefix, read credentials, image version, and architecture",[751,799,800,806],{},[766,801,802,805],{},[217,803,804],{},"input_staging_failed"," or missing output",[766,807,808,809,812,813],{},"State directory permissions and whether ",[217,810,811],{},"PYPLINES_WORK_VOLUME"," contains the same files as ",[217,814,815],{},"PYPLINES_RUNNER_STATE",[751,817,818,823],{},[766,819,820],{},[217,821,822],{},"action_network_unavailable",[766,824,825,826,829],{},"Environment network matches ",[217,827,828],{},"PYPLINES_ACTION_NETWORK"," and exists on the runner host",[751,831,832,835],{},[766,833,834],{},"Work becomes uncertain",[766,836,837,838,841],{},"Preserve runner identity\u002Fstate and follow ",[256,839,840],{"href":96},"recovery"," before replacing anything",[200,843,844,845,848,849,852],{},"Finish by setting ",[256,846,847],{"href":126},"user\u002Fteam access and approval policies",", establishing ",[256,850,851],{"href":130},"backups",", and providing operators with the server URL, Environment names, and available workflows.",[854,855,856],"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 .smnRP, html code.shiki .smnRP{--shiki-light:#243247;--shiki-default:#243247;--shiki-dark:#DCE6F0}html pre.shiki code .sgMYo, html code.shiki .sgMYo{--shiki-light:#54657A;--shiki-default:#54657A;--shiki-dark:#A9B8CA}html pre.shiki code .sfDcV, html code.shiki .sfDcV{--shiki-light:#34694B;--shiki-default:#34694B;--shiki-dark:#9BC9AD}html pre.shiki code .sFGQw, html code.shiki .sFGQw{--shiki-light:#765093;--shiki-default:#765093;--shiki-dark:#CFB1E8}",{"title":215,"searchDepth":229,"depth":229,"links":858},[859,860,863,864,865,866],{"id":206,"depth":229,"text":207},{"id":266,"depth":229,"text":267,"children":861},[862],{"id":286,"depth":320,"text":287},{"id":395,"depth":229,"text":396},{"id":483,"depth":229,"text":484},{"id":588,"depth":229,"text":589},{"id":742,"depth":229,"text":743},"Connect a registry and Environment, execute a known Action, and check retained evidence.","md",{},true,{"title":53,"description":867},"P0GNaL3JkexzdpYQt3irf7ERQYxmTMOxPIWugqjNQww",[874,876],{"title":49,"path":50,"stem":51,"description":875,"children":-1},"Prepare Docker and persistent work storage, enroll a runner, and verify admission.",{"title":57,"path":58,"stem":59,"description":877,"children":-1},"Replace server and runner artifacts while preserving execution state and a supported tooling combination.",1792213696973]