@outerlayer/cli 0.34.0-next.20261026145838 → 0.34.0-next.20261026161241

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +6 -0
  2. package/dist/{agent-setup-FNDKCPUP.js → agent-setup-WOEZELVB.js} +6 -6
  3. package/dist/{bridge-YJBB4YA3.js → bridge-F5FBQSPZ.js} +2 -2
  4. package/dist/{build-ZJK6CPNH.js → build-UDOBVX5J.js} +7 -7
  5. package/dist/{build-disk-7HS4UF7O.js → build-disk-C3WIAHCL.js} +6 -6
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-MHZKDI4H.js → builder-YNXWVH2V.js} +5 -5
  8. package/dist/{check-4W4QUBMP.js → check-ERYYVAEM.js} +37 -37
  9. package/dist/{chunk-2ILU7UAU.js → chunk-3VZTNXK5.js} +1 -1
  10. package/dist/{chunk-AE3OTPUU.js → chunk-4G4IH4A7.js} +102 -53
  11. package/dist/{chunk-4YFMNF5Y.js → chunk-4J2FF5HZ.js} +3 -3
  12. package/dist/{chunk-CAQCDYKF.js → chunk-5JGPTYLT.js} +2 -2
  13. package/dist/{chunk-OGPEHSNW.js → chunk-6KFJIU73.js} +1 -1
  14. package/dist/{chunk-3EJBI5JW.js → chunk-7FQYTM7M.js} +1 -1
  15. package/dist/{chunk-3N77LUQI.js → chunk-7QAJQDHS.js} +1 -1
  16. package/dist/{chunk-SI6WDF3U.js → chunk-CFFVCI2I.js} +1 -1
  17. package/dist/{chunk-7P3H4RY2.js → chunk-CNZRUVZ5.js} +102 -36
  18. package/dist/{chunk-PWSUNS6Y.js → chunk-E6OVLJTR.js} +98 -30
  19. package/dist/{chunk-WMNPKBX5.js → chunk-ELO5XEES.js} +4 -4
  20. package/dist/{chunk-PP6OX4OT.js → chunk-EPFFYDNX.js} +5 -5
  21. package/dist/{chunk-35JMYSUD.js → chunk-EUQZAH2W.js} +2 -2
  22. package/dist/{chunk-YZ375YBI.js → chunk-FZ4G6CMK.js} +4 -4
  23. package/dist/{chunk-WHDS6MEG.js → chunk-GHFI5GBF.js} +3 -3
  24. package/dist/{chunk-PXGU3GKY.js → chunk-GJ4KBHBD.js} +1 -1
  25. package/dist/{chunk-VVOSUGEF.js → chunk-H47VGSCW.js} +4 -4
  26. package/dist/{chunk-TFPNPS4Q.js → chunk-HOUFCUMH.js} +1 -1
  27. package/dist/{chunk-7JE2WFNK.js → chunk-HVPW272H.js} +3 -3
  28. package/dist/{chunk-M3ME6TLQ.js → chunk-HVQMIZ22.js} +4 -4
  29. package/dist/{chunk-7DXVL7TN.js → chunk-IO2BBKG4.js} +3 -3
  30. package/dist/{chunk-UONH72CJ.js → chunk-IWVGALDC.js} +2 -2
  31. package/dist/{chunk-ZP7GKJSM.js → chunk-JC6AQ6PC.js} +39 -6
  32. package/dist/{chunk-6JZXIWX7.js → chunk-JKNOJKVD.js} +34 -9
  33. package/dist/{chunk-GEQT3RPN.js → chunk-JSZRBQY3.js} +3 -3
  34. package/dist/{chunk-MOI2KDLH.js → chunk-L5VHGRQE.js} +1 -1
  35. package/dist/{chunk-SKVA4KWD.js → chunk-LD3BHLK7.js} +3 -3
  36. package/dist/{chunk-YNMVVQOQ.js → chunk-LQHCNXPK.js} +1 -1
  37. package/dist/{chunk-YHKU2NOZ.js → chunk-LTYBHCL4.js} +1 -1
  38. package/dist/{chunk-PAK5P2ND.js → chunk-MH6QLXUO.js} +1 -1
  39. package/dist/{chunk-OS7DJOQJ.js → chunk-MN3PP45X.js} +1 -1
  40. package/dist/{chunk-25GRRBTH.js → chunk-NHEU5CON.js} +1 -1
  41. package/dist/{chunk-IM6IL3F4.js → chunk-OQT7RT5I.js} +3 -3
  42. package/dist/{chunk-63IVRRIO.js → chunk-P3NPTFLF.js} +3 -3
  43. package/dist/{chunk-GC5PVMIJ.js → chunk-RR3VDM7M.js} +3 -3
  44. package/dist/{chunk-G4W4B33M.js → chunk-SDAEXUIX.js} +25 -10
  45. package/dist/{chunk-SYVRBBLW.js → chunk-SDELQEG4.js} +1 -1
  46. package/dist/{chunk-FDJPDZSR.js → chunk-TS3EFB7S.js} +1 -1
  47. package/dist/{chunk-CY5TCVBS.js → chunk-U6AWVO6L.js} +6 -6
  48. package/dist/{chunk-EMH2LNIE.js → chunk-V2VJYK46.js} +4 -4
  49. package/dist/{chunk-KAVZAB3E.js → chunk-VEJWLQ4G.js} +10 -10
  50. package/dist/{chunk-XTYYF6P7.js → chunk-VUQKGBIQ.js} +14 -7
  51. package/dist/{chunk-KRTD2F3I.js → chunk-VWZHOFBP.js} +3 -3
  52. package/dist/{chunk-3RLKILPT.js → chunk-WE4C3ODP.js} +2 -2
  53. package/dist/{chunk-QEIA5Q35.js → chunk-XL2MPORM.js} +4 -4
  54. package/dist/{chunk-VGRCZE6U.js → chunk-XSFR76J7.js} +3 -3
  55. package/dist/{chunk-UMYYYF7B.js → chunk-YL3RWW7X.js} +1 -1
  56. package/dist/{chunk-GSSVJNP2.js → chunk-Z7WMU3RA.js} +3 -2
  57. package/dist/{chunk-3EHDZTRT.js → chunk-ZIKZZ4LK.js} +3 -3
  58. package/dist/{claude-launcher-OQZNW7XJ.js → claude-launcher-6KGANL7E.js} +1 -1
  59. package/dist/{cli-PFWJD5QM.js → cli-LXKVCFD7.js} +112 -111
  60. package/dist/{command-CM22HPN5.js → command-VQPQDPCZ.js} +24 -24
  61. package/dist/{config-W2XWNR4C.js → config-WSZIWPP4.js} +7 -7
  62. package/dist/{connect-cmd-TOWE4P45.js → connect-cmd-LI34HS5Q.js} +6 -6
  63. package/dist/{container-start-D2OEPMUO.js → container-start-IL74XEC5.js} +30 -30
  64. package/dist/{context-show-cmd-5UJUWBJL.js → context-show-cmd-X27GMOT6.js} +7 -7
  65. package/dist/{control-plane-launch-XBGHM7DB.js → control-plane-launch-74EIIB5Z.js} +5 -5
  66. package/dist/dist-HVXLUMRV.js +7 -0
  67. package/dist/{docker-GA63DVME.js → docker-KZ3OQTPW.js} +5 -5
  68. package/dist/{doctor-GVWQBHBC.js → doctor-KPKLFIJH.js} +24 -24
  69. package/dist/{emit-artifact-cmd-TUOLSGHB.js → emit-artifact-cmd-BJICHW2E.js} +11 -11
  70. package/dist/{emit-criteria-cmd-VEUMA7MZ.js → emit-criteria-cmd-MUWPT25P.js} +8 -8
  71. package/dist/{emit-demo-cmd-YLEZB6FG.js → emit-demo-cmd-YQN7VKQH.js} +12 -12
  72. package/dist/{emit-finding-cmd-BX3FWGSX.js → emit-finding-cmd-NPBWVY44.js} +8 -8
  73. package/dist/{emit-result-cmd-AYXGCIPR.js → emit-result-cmd-7CJZZQGK.js} +10 -10
  74. package/dist/{emit-step-cmd-CU6GQ3WW.js → emit-step-cmd-ZPLHZAMA.js} +8 -8
  75. package/dist/{exec-client-QB4OZRGM.js → exec-client-LXHTMVIB.js} +3 -3
  76. package/dist/find-unit-UKH6JH4S.js +18 -0
  77. package/dist/{findings-cmd-G4V4M3PO.js → findings-cmd-DZ4ESTHX.js} +8 -8
  78. package/dist/{fleet-readiness-NJYTQYTA.js → fleet-readiness-YSI4NOHT.js} +5 -5
  79. package/dist/{governing-source-JQV3ZKD7.js → governing-source-JPRMOB3O.js} +10 -10
  80. package/dist/{guest-init-IF5LXGUL.js → guest-init-WWL2WL7R.js} +4 -4
  81. package/dist/{hook-fast-GPUL7T77.js → hook-fast-6EW2MGA2.js} +1 -1
  82. package/dist/{pending-ERXWVLLG.js → host-key-TSOKVSZX.js} +3 -3
  83. package/dist/{image-tag-SEMBVB5D.js → image-tag-BTXKIH73.js} +3 -3
  84. package/dist/index.js +4 -4
  85. package/dist/{init-FY3HP73H.js → init-MN3MNG7V.js} +21 -21
  86. package/dist/{init-3NT4YX2X.js → init-V6Y2VNKW.js} +21 -21
  87. package/dist/{init-cmd-RXHHEAOT.js → init-cmd-QCWLJDIF.js} +11 -11
  88. package/dist/{init-update-RHS6HWLI.js → init-update-GTFLPDEL.js} +9 -9
  89. package/dist/{install-cmd-5H6M2KJ7.js → install-cmd-RGO7NWKP.js} +5 -5
  90. package/dist/{logs-6CMB3DO6.js → logs-LEVH6VAI.js} +2 -2
  91. package/dist/{loop-V3GED2WX.js → loop-A4CB4IFF.js} +36 -36
  92. package/dist/{machine-HLZLH327.js → machine-XG54XYYZ.js} +21 -21
  93. package/dist/{mcp-serve-cmd-MWGIN6YL.js → mcp-serve-cmd-4O5INM77.js} +4 -4
  94. package/dist/{paths-T2DEBI62.js → paths-AQ47ZRHK.js} +2 -2
  95. package/dist/{host-key-5RU322O3.js → pending-UWFDVFOA.js} +3 -3
  96. package/dist/{pidfile-EAD2OEM7.js → pidfile-PCG2H5T4.js} +3 -3
  97. package/dist/{record-IMXQNHPB.js → record-SVCNFCGQ.js} +3 -3
  98. package/dist/{runner-env-V52JUOD5.js → runner-env-YPXWTNP3.js} +9 -9
  99. package/dist/{runner-identity-J4NCBSBU.js → runner-identity-XPZO3TG4.js} +5 -5
  100. package/dist/{runner-key-ZUHMQCHZ.js → runner-key-B5EJH25Z.js} +21 -21
  101. package/dist/{session-sender-XDKMK4SF.js → session-sender-XED7CKHP.js} +11 -11
  102. package/dist/{spec-cmd-XQV7EIJW.js → spec-cmd-TRXAGQYM.js} +9 -9
  103. package/dist/{status-ZJJEJ52D.js → status-6V2S63DS.js} +28 -28
  104. package/dist/{sync-cmd-BG2M536W.js → sync-cmd-UQVENF25.js} +10 -10
  105. package/dist/{update-steps-I5JLERXS.js → update-steps-CSC2QVJF.js} +29 -29
  106. package/dist/{watch-7A63565I.js → watch-EZGDDRTQ.js} +10 -10
  107. package/dist/{work-claim-cmd-OVPMBIRR.js → work-claim-cmd-YSAJ7DAK.js} +14 -14
  108. package/dist/{work-cmd-KVFRK24I.js → work-cmd-V5FHLWJM.js} +8 -8
  109. package/dist/{work-comment-cmd-GC3WAFM7.js → work-comment-cmd-KLEMDYI4.js} +9 -9
  110. package/dist/{work-demo-cmd-IOB5UDGQ.js → work-demo-cmd-XYRKFP4G.js} +8 -8
  111. package/dist/{work-logs-cmd-7II6D2JJ.js → work-logs-cmd-DOGPK7Q6.js} +8 -8
  112. package/dist/{work-open-pr-cmd-FYKRKCDL.js → work-open-pr-cmd-UAUEEP3V.js} +9 -9
  113. package/dist/{work-pr-cmd-KP3RI7TV.js → work-pr-cmd-LYWL7ZLF.js} +8 -8
  114. package/dist/{work-proofs-cmd-TVU6QFZN.js → work-proofs-cmd-YMLIJDJZ.js} +9 -9
  115. package/dist/{work-proofs-record-XANZE3K4.js → work-proofs-record-NK3ULOUQ.js} +15 -15
  116. package/dist/{work-stop-cmd-5V3DV3HJ.js → work-stop-cmd-MRLJEQRP.js} +8 -8
  117. package/package.json +1 -1
  118. package/dist/dist-IOPJIQWK.js +0 -7
  119. package/dist/find-unit-GGBRYOSO.js +0 -18
package/README.md CHANGED
@@ -334,6 +334,12 @@ content:
334
334
  provisions the build. The runner keeps the key in memory only, gives it to
335
335
  the build's model traffic, and forgets it when the attempt ends. It never
336
336
  writes the key to disk or to a log.
337
+ - **`outerlayer runner start` on a managed runner** also asks your gateway for
338
+ the factory's build settings once for each claim (`POST
339
+ /v1/work-items/{id}/claim/build-settings`, signed with the host key). The
340
+ answer holds the machine size, the hosts the factory allows and the values of
341
+ its build variables. The runner keeps them in memory only, passes the
342
+ variables to the build, and scrubs each value from what it uploads.
337
343
  - **`outerlayer runner start` with `builtin:process` hooks** runs each build
338
344
  as a process under the runner's own user, with no isolation, and the
339
345
  attempt records `shared-user`. The runner clones the item's repository
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { keepHandWritten, runAgentSetup } from './chunk-3EJBI5JW.js';
3
+ export { keepHandWritten, runAgentSetup } from './chunk-7FQYTM7M.js';
4
4
  import './chunk-KPHRRCUY.js';
5
5
  import './chunk-KT4CN6OU.js';
6
6
  import './chunk-4P6QGMPN.js';
7
7
  import './chunk-ANPNT6PM.js';
8
8
  import './chunk-NKOM4JKY.js';
9
- import './chunk-CAQCDYKF.js';
9
+ import './chunk-5JGPTYLT.js';
10
10
  import './chunk-JWNH4ZTF.js';
11
- import './chunk-3N77LUQI.js';
11
+ import './chunk-7QAJQDHS.js';
12
12
  import './chunk-PJDQPF5N.js';
13
- import './chunk-MOI2KDLH.js';
13
+ import './chunk-L5VHGRQE.js';
14
14
  import './chunk-ZJSNLVCE.js';
15
15
  import './chunk-BJ3KTMDH.js';
16
16
  import './chunk-ZQSANKS4.js';
@@ -24,8 +24,8 @@ import './chunk-TUSYOL2O.js';
24
24
  import './chunk-FGXT5OXS.js';
25
25
  import './chunk-EOTMDIYC.js';
26
26
  import './chunk-VNVZDWO3.js';
27
- import './chunk-PXGU3GKY.js';
28
- import './chunk-G4W4B33M.js';
27
+ import './chunk-GJ4KBHBD.js';
28
+ import './chunk-SDAEXUIX.js';
29
29
  import './chunk-MESOOLF4.js';
30
30
  import './chunk-Z5GEFMRW.js';
31
31
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-SI6WDF3U.js';
4
- import './chunk-G4W4B33M.js';
3
+ export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-CFFVCI2I.js';
4
+ import './chunk-SDAEXUIX.js';
5
5
  import './chunk-MESOOLF4.js';
6
6
  import './chunk-Z5GEFMRW.js';
7
7
 
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { KEY_PREFIX, TAG_HOST, buildRepositoryImage, metadataFromLabels, prepareImageBuild, writeRecord } from './chunk-VVOSUGEF.js';
4
- export { RecipeError } from './chunk-M3ME6TLQ.js';
3
+ export { KEY_PREFIX, TAG_HOST, buildRepositoryImage, metadataFromLabels, prepareImageBuild, writeRecord } from './chunk-H47VGSCW.js';
4
+ export { RecipeError } from './chunk-HVQMIZ22.js';
5
5
  import './chunk-4UPET3R7.js';
6
- import './chunk-YNMVVQOQ.js';
6
+ import './chunk-LQHCNXPK.js';
7
7
  import './chunk-JBJTC3UU.js';
8
- import './chunk-MOI2KDLH.js';
9
- import './chunk-GSSVJNP2.js';
8
+ import './chunk-L5VHGRQE.js';
9
+ import './chunk-Z7WMU3RA.js';
10
10
  import './chunk-EOTMDIYC.js';
11
- import './chunk-PXGU3GKY.js';
12
- import './chunk-G4W4B33M.js';
11
+ import './chunk-GJ4KBHBD.js';
12
+ import './chunk-SDAEXUIX.js';
13
13
  import './chunk-MESOOLF4.js';
14
14
  import './chunk-Z5GEFMRW.js';
15
15
 
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK, DOCKER_CACHE_MS, allocatedBytes, checkDiskFit, realBuildDiskProbe, runDocker, volumeBytes } from './chunk-UONH72CJ.js';
4
- import './chunk-M3ME6TLQ.js';
3
+ export { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK, DOCKER_CACHE_MS, allocatedBytes, checkDiskFit, realBuildDiskProbe, runDocker, volumeBytes } from './chunk-IWVGALDC.js';
4
+ import './chunk-HVQMIZ22.js';
5
5
  import './chunk-4UPET3R7.js';
6
- import './chunk-MOI2KDLH.js';
7
- import './chunk-GSSVJNP2.js';
6
+ import './chunk-L5VHGRQE.js';
7
+ import './chunk-Z7WMU3RA.js';
8
8
  import './chunk-EOTMDIYC.js';
9
- import './chunk-PXGU3GKY.js';
10
- import './chunk-G4W4B33M.js';
9
+ import './chunk-GJ4KBHBD.js';
10
+ import './chunk-SDAEXUIX.js';
11
11
  import './chunk-MESOOLF4.js';
12
12
  import './chunk-Z5GEFMRW.js';
13
13
 
@@ -1 +1 @@
1
- {"id":"2026-10-26T15:00:03.094Z+e6e9c6f","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
1
+ {"id":"2026-10-26T16:14:37.797Z+2a1ebb8","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-M3ME6TLQ.js';
3
+ export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-HVQMIZ22.js';
4
4
  import './chunk-4UPET3R7.js';
5
- import './chunk-MOI2KDLH.js';
6
- import './chunk-GSSVJNP2.js';
5
+ import './chunk-L5VHGRQE.js';
6
+ import './chunk-Z7WMU3RA.js';
7
7
  import './chunk-EOTMDIYC.js';
8
- import './chunk-PXGU3GKY.js';
9
- import './chunk-G4W4B33M.js';
8
+ import './chunk-GJ4KBHBD.js';
9
+ import './chunk-SDAEXUIX.js';
10
10
  import './chunk-MESOOLF4.js';
11
11
  import './chunk-Z5GEFMRW.js';
12
12
 
@@ -1,61 +1,61 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { probeCredentials } from './chunk-PWSUNS6Y.js';
4
- import './chunk-CY5TCVBS.js';
5
- import './chunk-TFPNPS4Q.js';
6
- import './chunk-KRTD2F3I.js';
7
- import './chunk-AE3OTPUU.js';
3
+ import { probeCredentials } from './chunk-E6OVLJTR.js';
4
+ import './chunk-U6AWVO6L.js';
5
+ import './chunk-HOUFCUMH.js';
6
+ import './chunk-VWZHOFBP.js';
7
+ import './chunk-4G4IH4A7.js';
8
8
  import './chunk-ZVB57WI6.js';
9
- import './chunk-FDJPDZSR.js';
9
+ import './chunk-TS3EFB7S.js';
10
10
  import './chunk-3JVYMD4G.js';
11
11
  import './chunk-E7R2GIAW.js';
12
- import './chunk-PAK5P2ND.js';
13
- import './chunk-63IVRRIO.js';
12
+ import './chunk-MH6QLXUO.js';
13
+ import './chunk-P3NPTFLF.js';
14
14
  import './chunk-I3LTIAOR.js';
15
- import './chunk-SKVA4KWD.js';
16
- import './chunk-XTYYF6P7.js';
17
- import './chunk-VGRCZE6U.js';
15
+ import './chunk-LD3BHLK7.js';
16
+ import './chunk-VUQKGBIQ.js';
17
+ import './chunk-XSFR76J7.js';
18
18
  import './chunk-ESVW4MJY.js';
19
- import './chunk-SI6WDF3U.js';
20
- import { managedProblems, managedFactsOf } from './chunk-ZP7GKJSM.js';
21
- import './chunk-UMYYYF7B.js';
19
+ import './chunk-CFFVCI2I.js';
20
+ import { managedProblems, managedFactsOf } from './chunk-JC6AQ6PC.js';
21
+ import './chunk-YL3RWW7X.js';
22
22
  import './chunk-TBT347UY.js';
23
- import { findServiceUnit } from './chunk-3RLKILPT.js';
23
+ import { findServiceUnit } from './chunk-WE4C3ODP.js';
24
24
  import './chunk-XKJOIQ2Q.js';
25
- import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, HELPER_ENV, helperSocketPath, probeHelper, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-7P3H4RY2.js';
25
+ import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, HELPER_ENV, helperSocketPath, probeHelper, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-CNZRUVZ5.js';
26
26
  import './chunk-2PGI6RDE.js';
27
- import './chunk-VVOSUGEF.js';
27
+ import './chunk-H47VGSCW.js';
28
28
  import './chunk-OGFGZQA3.js';
29
- import './chunk-2ILU7UAU.js';
30
- import './chunk-OGPEHSNW.js';
31
- import './chunk-PP6OX4OT.js';
32
- import './chunk-SYVRBBLW.js';
29
+ import './chunk-3VZTNXK5.js';
30
+ import './chunk-6KFJIU73.js';
31
+ import './chunk-EPFFYDNX.js';
32
+ import './chunk-SDELQEG4.js';
33
33
  import './chunk-TQMI335S.js';
34
- import './chunk-7JE2WFNK.js';
35
- import './chunk-EMH2LNIE.js';
36
- import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-3EHDZTRT.js';
37
- import './chunk-UONH72CJ.js';
38
- import './chunk-M3ME6TLQ.js';
34
+ import './chunk-HVPW272H.js';
35
+ import './chunk-V2VJYK46.js';
36
+ import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-ZIKZZ4LK.js';
37
+ import './chunk-IWVGALDC.js';
38
+ import './chunk-HVQMIZ22.js';
39
39
  import './chunk-4UPET3R7.js';
40
- import './chunk-YNMVVQOQ.js';
40
+ import './chunk-LQHCNXPK.js';
41
41
  import './chunk-JBJTC3UU.js';
42
42
  import './chunk-KT4CN6OU.js';
43
43
  import './chunk-4P6QGMPN.js';
44
- import './chunk-6JZXIWX7.js';
44
+ import './chunk-JKNOJKVD.js';
45
45
  import './chunk-IP7BIBXJ.js';
46
- import './chunk-7DXVL7TN.js';
47
- import './chunk-35JMYSUD.js';
46
+ import './chunk-IO2BBKG4.js';
47
+ import './chunk-EUQZAH2W.js';
48
48
  import './chunk-Y5YCX6AL.js';
49
49
  import './chunk-G2JWZDFA.js';
50
50
  import './chunk-ANPNT6PM.js';
51
51
  import './chunk-MECW77XP.js';
52
52
  import './chunk-NKOM4JKY.js';
53
- import './chunk-CAQCDYKF.js';
53
+ import './chunk-5JGPTYLT.js';
54
54
  import './chunk-JWNH4ZTF.js';
55
- import './chunk-3N77LUQI.js';
55
+ import './chunk-7QAJQDHS.js';
56
56
  import './chunk-PJDQPF5N.js';
57
- import './chunk-MOI2KDLH.js';
58
- import './chunk-25GRRBTH.js';
57
+ import './chunk-L5VHGRQE.js';
58
+ import './chunk-NHEU5CON.js';
59
59
  import './chunk-ZJSNLVCE.js';
60
60
  import './chunk-2O5KA67H.js';
61
61
  import './chunk-BKO6JEZI.js';
@@ -63,7 +63,7 @@ import './chunk-FGF52V4V.js';
63
63
  import './chunk-HCVLP7XA.js';
64
64
  import './chunk-BJ3KTMDH.js';
65
65
  import './chunk-ZQSANKS4.js';
66
- import './chunk-GSSVJNP2.js';
66
+ import './chunk-Z7WMU3RA.js';
67
67
  import './chunk-5BHIBJDA.js';
68
68
  import './chunk-CDDED64E.js';
69
69
  import './chunk-RA3O54FC.js';
@@ -77,8 +77,8 @@ import './chunk-TUSYOL2O.js';
77
77
  import './chunk-FGXT5OXS.js';
78
78
  import './chunk-EOTMDIYC.js';
79
79
  import './chunk-VNVZDWO3.js';
80
- import './chunk-PXGU3GKY.js';
81
- import { claudeEnvPath, parseRunnerEnv } from './chunk-G4W4B33M.js';
80
+ import './chunk-GJ4KBHBD.js';
81
+ import { claudeEnvPath, parseRunnerEnv } from './chunk-SDAEXUIX.js';
82
82
  import './chunk-MESOOLF4.js';
83
83
  import './chunk-Z5GEFMRW.js';
84
84
  import { readFileSync } from 'fs';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { EXEC_PORT } from './chunk-OGPEHSNW.js';
3
+ import { EXEC_PORT } from './chunk-6KFJIU73.js';
4
4
  import { createConnection } from 'net';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,35 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { readsJobState, READ_JOB_STATE_FORMATS, jobStateFormatOf } from './chunk-ZVB57WI6.js';
4
- import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-63IVRRIO.js';
4
+ import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-P3NPTFLF.js';
5
5
  import { zodProblem } from './chunk-I3LTIAOR.js';
6
- import { senderPidfile } from './chunk-SKVA4KWD.js';
7
- import { installScrubContext } from './chunk-XTYYF6P7.js';
8
- import { writeDockerClientConfig } from './chunk-SI6WDF3U.js';
6
+ import { senderPidfile } from './chunk-LD3BHLK7.js';
7
+ import { installScrubContext } from './chunk-VUQKGBIQ.js';
8
+ import { writeDockerClientConfig } from './chunk-CFFVCI2I.js';
9
9
  import { upgradedStarterText } from './chunk-XKJOIQ2Q.js';
10
- import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, hasClaudeCredential, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, startHostServices, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, helperFirecrackerNote, managedClaudeKeyValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, ROOT_DISK_ID_PREFIX, copyJudgeTree } from './chunk-7P3H4RY2.js';
11
- import { readBranchHead, fetchCommit, diffBetween } from './chunk-VVOSUGEF.js';
12
- import { waitForAgent, vmExecArgs } from './chunk-2ILU7UAU.js';
13
- import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-OGPEHSNW.js';
14
- import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-PP6OX4OT.js';
15
- import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-3EHDZTRT.js';
16
- import { DEFAULT_CACHE_DISK, formatBytes, allocatedBytes } from './chunk-UONH72CJ.js';
17
- import { parseSize, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-M3ME6TLQ.js';
10
+ import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, hasClaudeCredential, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, startHostServices, LEASE_SECONDS, managedBuildSettingsFor, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, dropManagedBuildSettings, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, managedMachineLimits, withFactoryHosts, helperFirecrackerNote, managedClaudeKeyValues, managedBuildSettingValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, ROOT_DISK_ID_PREFIX, copyJudgeTree } from './chunk-CNZRUVZ5.js';
11
+ import { readBranchHead, fetchCommit, diffBetween } from './chunk-H47VGSCW.js';
12
+ import { waitForAgent, vmExecArgs } from './chunk-3VZTNXK5.js';
13
+ import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-6KFJIU73.js';
14
+ import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-EPFFYDNX.js';
15
+ import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-ZIKZZ4LK.js';
16
+ import { formatBytes, DEFAULT_CACHE_DISK, allocatedBytes } from './chunk-IWVGALDC.js';
17
+ import { HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, parseSize, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-HVQMIZ22.js';
18
18
  import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-4UPET3R7.js';
19
19
  import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
20
- import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-6JZXIWX7.js';
20
+ import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-JKNOJKVD.js';
21
21
  import { planArtifactUpload } from './chunk-MECW77XP.js';
22
22
  import { readCloudConfig } from './chunk-PJDQPF5N.js';
23
- import { signerFor } from './chunk-MOI2KDLH.js';
23
+ import { signerFor } from './chunk-L5VHGRQE.js';
24
24
  import { resolvePackRoot, AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-ZQSANKS4.js';
25
- import { scrubText } from './chunk-GSSVJNP2.js';
25
+ import { scrubText } from './chunk-Z7WMU3RA.js';
26
26
  import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
27
27
  import { resolveVersion } from './chunk-RA3O54FC.js';
28
28
  import { parsePolicy } from './chunk-FGXT5OXS.js';
29
29
  import { CheckItemsSchema, CHECK_ITEM_REASON_MAX_LENGTH } from './chunk-EOTMDIYC.js';
30
30
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
31
- import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-PXGU3GKY.js';
32
- import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, MAVEN_SETTINGS_FILE, checkEnvironment, EVAL_INPUT_DIR } from './chunk-G4W4B33M.js';
31
+ import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-GJ4KBHBD.js';
32
+ import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, MAVEN_SETTINGS_FILE, checkEnvironment, EVAL_INPUT_DIR } from './chunk-SDAEXUIX.js';
33
33
  import { RUNNER_WORDED_REASONS, UNKNOWN_TRACKING_REASON } from './chunk-MESOOLF4.js';
34
34
  import { existsSync, statSync, appendFileSync, rmSync, mkdirSync, chmodSync, writeFileSync, openSync, readFileSync, closeSync, readdirSync, lstatSync, fstatSync, readSync, realpathSync } from 'fs';
35
35
  import { join, dirname, delimiter, sep } from 'path';
@@ -193,6 +193,37 @@ var GUEST_MAVEN_DIR = `${JOB_MOUNT}/maven`;
193
193
  function buildMemoryBytes(config) {
194
194
  return parseSize(config.build?.memory ?? DEFAULT_MEMORY) ?? parseSize(DEFAULT_MEMORY);
195
195
  }
196
+ function machineLimits(config, jobDir) {
197
+ const settings = managedBuildSettingsFor(jobDir);
198
+ if (settings !== void 0) return managedMachineLimits(settings);
199
+ return {
200
+ cpus: config.build?.cpus ?? DEFAULT_CPUS,
201
+ memoryBytes: buildMemoryBytes(config),
202
+ diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
203
+ };
204
+ }
205
+ function recordedLimits(limits) {
206
+ return { memoryBytes: limits.memoryBytes, diskBytes: limits.diskBytes };
207
+ }
208
+ function memoryTextOf(config, jobDir, limits) {
209
+ return managedBuildSettingsFor(jobDir) === void 0 ? config.build?.memory : `${limits.memoryBytes / 1024 ** 3}g`;
210
+ }
211
+ function builderMachineFor(config, jobDir, assets, limits) {
212
+ return {
213
+ kernel: assets.kernel,
214
+ firecracker: assets.firecracker,
215
+ limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
216
+ memory: memoryTextOf(config, jobDir, limits),
217
+ allowHosts: withFactoryHosts(config.build?.allowHosts, managedBuildSettingsFor(jobDir)),
218
+ managed: config.managed === true,
219
+ timeLimitMinutes: config.timeLimitMinutes
220
+ };
221
+ }
222
+ function factoryVariablesOf(config, jobDir) {
223
+ const held = managedBuildSettingsFor(jobDir)?.variables;
224
+ if (held !== void 0) return held;
225
+ return config.managed === true ? [] : void 0;
226
+ }
196
227
  function firstLine(text2) {
197
228
  return text2.trim().split("\n")[0] ?? "";
198
229
  }
@@ -327,11 +358,8 @@ async function provisionMicroVm(input) {
327
358
  });
328
359
  if (unfetched !== void 0) return fail(unfetched);
329
360
  }
330
- const limits = {
331
- cpus: config.build?.cpus ?? DEFAULT_CPUS,
332
- memoryBytes: buildMemoryBytes(config),
333
- diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
334
- };
361
+ const limits = machineLimits(config, jobDir);
362
+ const memoryText = memoryTextOf(config, jobDir, limits);
335
363
  let buildsInBuilder = imageBuildOf(config) === "vm";
336
364
  if (buildsInBuilder && !vm.builderDiskPinned()) {
337
365
  if (config.managed === true) return fail(MANAGED_NO_BUILDER_DISK_REASON);
@@ -351,17 +379,7 @@ async function provisionMicroVm(input) {
351
379
  deadlineMs: input.deadlineMs,
352
380
  now: input.now,
353
381
  guestHelper: { path: assets.helper, sha256: assets.helperSha256 },
354
- ...buildsInBuilder ? {
355
- inBuilder: {
356
- kernel: assets.kernel,
357
- firecracker: assets.firecracker,
358
- limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
359
- memory: config.build?.memory,
360
- allowHosts: config.build?.allowHosts,
361
- managed: config.managed === true,
362
- timeLimitMinutes: config.timeLimitMinutes
363
- }
364
- } : {}
382
+ ...buildsInBuilder ? { inBuilder: builderMachineFor(config, jobDir, assets, limits) } : {}
365
383
  });
366
384
  if (!obtained.ok) return obtained.aborted === true ? { ok: false, reason: obtained.reason, aborted: true } : fail(obtained.reason);
367
385
  const { report } = obtained.built;
@@ -375,6 +393,7 @@ async function provisionMicroVm(input) {
375
393
  imageId: report.imageId,
376
394
  containerEnv: report.apply.containerEnv,
377
395
  builtIns: true,
396
+ limits: recordedLimits(limits),
378
397
  lifecycle: report.apply.lifecycle,
379
398
  ...governingSource.kind === "governed" ? { governing: { repository: governingSource.repository, ref: governingSource.ref, commit: governingSource.sha } } : {},
380
399
  ...report.docker === true ? { docker: true } : {}
@@ -387,7 +406,8 @@ async function provisionMicroVm(input) {
387
406
  repositories,
388
407
  hostEnv: runtime.hostEnv,
389
408
  containerEnv: report.apply.containerEnv,
390
- builtIns: true
409
+ builtIns: true,
410
+ factoryVariables: factoryVariablesOf(config, jobDir)
391
411
  };
392
412
  const env = buildEnvironment(envInput);
393
413
  if (env.skippedTokenVariables.length > 0) {
@@ -406,7 +426,7 @@ async function provisionMicroVm(input) {
406
426
  let why = reason;
407
427
  if (!aborted && (state.cgroup !== void 0 || state.jailed !== void 0)) {
408
428
  try {
409
- if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(config.build?.memory);
429
+ if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(memoryText);
410
430
  } catch (err) {
411
431
  log.error(`${tag} could not read the build's memory events: ${describeCallFailure(err)} \xB7 continuing`);
412
432
  }
@@ -425,7 +445,7 @@ async function provisionMicroVm(input) {
425
445
  imageConfig = { env: madeInBuilder.env, user: madeInBuilder.user };
426
446
  } else {
427
447
  try {
428
- state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: report.imageId, memoryBytes: buildMemoryBytes(config) });
448
+ state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: report.imageId, memoryBytes: limits.memoryBytes });
429
449
  imageConfig = await vm.rootfs.imageConfig(report.imageId);
430
450
  } catch (err) {
431
451
  return bail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
@@ -678,7 +698,8 @@ function vmExecFor(input, argv) {
678
698
  containerEnv: state.containerEnv ?? {},
679
699
  builtIns: state.builtIns === true,
680
700
  identity: input.job.commitIdentity,
681
- imageEnv: state.imageEnv
701
+ imageEnv: state.imageEnv,
702
+ factoryVariables: factoryVariablesOf(input.config, input.jobDir)
682
703
  });
683
704
  const options = {
684
705
  socket: state.vsockPath,
@@ -707,7 +728,8 @@ async function startMicroVmCommand(input) {
707
728
  containerEnv: state.containerEnv ?? {},
708
729
  builtIns: state.builtIns === true,
709
730
  identity: input.job.commitIdentity,
710
- imageEnv: state.imageEnv
731
+ imageEnv: state.imageEnv,
732
+ factoryVariables: factoryVariablesOf(input.config, input.jobDir)
711
733
  });
712
734
  const started = await input.runtime.vm.exec(state.vsockPath, {
713
735
  argv: ["/bin/sh", "-c", commandWithShim(input.job, input.cmdline)],
@@ -749,7 +771,8 @@ async function syncInMicroVm(input) {
749
771
  containerEnv: state.containerEnv ?? {},
750
772
  builtIns: state.builtIns === true,
751
773
  identity: job.commitIdentity,
752
- imageEnv: state.imageEnv
774
+ imageEnv: state.imageEnv,
775
+ factoryVariables: factoryVariablesOf(input.config, input.jobDir)
753
776
  });
754
777
  const result = await runtime.vm.exec(state.vsockPath, {
755
778
  argv: ["outerlayer", "sync"],
@@ -873,6 +896,7 @@ async function startCheckMicroVm(input) {
873
896
  const { config, runtime, job, jobDir, tokens, log } = input;
874
897
  const { vm } = runtime;
875
898
  const tag = `#${job.item}`;
899
+ const limits = machineLimits(config, jobDir);
876
900
  const built = job.microvm;
877
901
  const repository = built?.repository ?? job.repository;
878
902
  if (built === void 0 || built.imageId === void 0 || repository === void 0 || job.branch === void 0) {
@@ -922,7 +946,7 @@ async function startCheckMicroVm(input) {
922
946
  state.rootfs = built.rootfs;
923
947
  } else {
924
948
  try {
925
- state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: built.imageId, memoryBytes: buildMemoryBytes(config) });
949
+ state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: built.imageId, memoryBytes: limits.memoryBytes });
926
950
  } catch (err) {
927
951
  return fail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
928
952
  }
@@ -940,16 +964,11 @@ async function startCheckMicroVm(input) {
940
964
  log: (line) => log.line(`${tag} ${line}`),
941
965
  readOnly: true
942
966
  });
943
- runtime.tunnels.set(buildId, await startServicesFor(runtime, config, buildDir2, checksDir, void 0, false, gitRemote));
967
+ runtime.tunnels.set(buildId, await startServicesFor(runtime, config, buildDir2, checksDir, void 0, false, gitRemote, "socket", void 0, void 0, void 0, jobDir));
944
968
  } catch (err) {
945
969
  return fail(`the tunnel could not start: ${describeCallFailure(err)}`);
946
970
  }
947
971
  if (abandoned()) return fail(ABANDONED);
948
- const limits = {
949
- cpus: config.build?.cpus ?? DEFAULT_CPUS,
950
- memoryBytes: buildMemoryBytes(config),
951
- diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
952
- };
953
972
  const links = vsockLinks({ destinations: config.build?.destinations?.length ?? 0, builtIns: false });
954
973
  const configPath = join(buildDir2, "vm.json");
955
974
  const helper = await helperFor(runtime, (line) => log.line(`${tag} ${line}`), config.managed === true);
@@ -1009,7 +1028,16 @@ async function startCheckMicroVm(input) {
1009
1028
  const failed = await boot();
1010
1029
  if (failed !== void 0) return fail(failed);
1011
1030
  if (abandoned()) return fail(ABANDONED);
1012
- const env = checkEnvironment({ config, item: job.item, repository, hostEnv: runtime.hostEnv, containerEnv: built.containerEnv ?? {}, imageEnv: built.imageEnv });
1031
+ const env = checkEnvironment({
1032
+ config,
1033
+ item: job.item,
1034
+ repository,
1035
+ hostEnv: runtime.hostEnv,
1036
+ containerEnv: built.containerEnv ?? {},
1037
+ imageEnv: built.imageEnv,
1038
+ // The checks of a managed build get its factory's variables, as its command did, and none of the runner's own.
1039
+ factoryVariables: factoryVariablesOf(config, jobDir)
1040
+ });
1013
1041
  const evalInput = { dir: join(checksDir, EVAL_INPUT_NAME), delivered: false };
1014
1042
  const deliverEvalInput = async () => {
1015
1043
  await unpackIntoGuest(runtime, state, evalInput.dir, EVAL_INPUT_DIR, { readOnly: true });
@@ -2650,7 +2678,7 @@ function mergeScrubConfig(a, b) {
2650
2678
  function releaseScrub(config, home) {
2651
2679
  const merged = mergeScrubConfig(config.scrub, readCloudConfig(home).scrub);
2652
2680
  const secrets = [...headerVariables(config.build?.destinations), ...CLAUDE_CREDENTIAL_VARIABLES].map((name) => process.env[name] ?? "");
2653
- const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues(), ...managedClaudeKeyValues()].filter((value) => value !== void 0);
2681
+ const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues(), ...managedClaudeKeyValues(), ...managedBuildSettingValues()].filter((value) => value !== void 0);
2654
2682
  return { literals: [...scrubList(merged?.literals), ...secrets, ...held], patterns: scrubList(merged?.patterns) };
2655
2683
  }
2656
2684
  function transcriptScrub(config, secrets) {
@@ -2927,6 +2955,15 @@ function readTunnelRecord(path) {
2927
2955
  return void 0;
2928
2956
  }
2929
2957
  }
2958
+ var VALUES_NOT_HELD = "the runner restarted and could not read this build's variables from its factory again, so it cannot remove their values from what it uploads";
2959
+ var SCRUBBED_RELEASE_LOG = "release-log.txt";
2960
+ function readScrubbedReleaseLog(jobDirPath) {
2961
+ try {
2962
+ return readFileSync(join(jobDirPath, SCRUBBED_RELEASE_LOG), "utf8");
2963
+ } catch {
2964
+ return void 0;
2965
+ }
2966
+ }
2930
2967
  async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
2931
2968
  const spawnFn = deps.spawnFn ?? spawn;
2932
2969
  const now = deps.now ?? (() => /* @__PURE__ */ new Date());
@@ -2935,6 +2972,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
2935
2972
  const logPath = join(jobDirPath, "command.log");
2936
2973
  const tag = `#${job.item}`;
2937
2974
  deps.attemptLogs?.open(job.item, jobDirPath);
2975
+ const valuesNotHeld = (job.managedVariables?.length ?? 0) > 0 && managedBuildSettingsFor(jobDirPath) === void 0;
2938
2976
  if (job.sender !== void 0) {
2939
2977
  await stopSender({ job, deps: { spawnFn, runtime: deps.container, log } });
2940
2978
  delete job.sender;
@@ -2978,6 +3016,10 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
2978
3016
  writeJobFile(jobFilePath, job);
2979
3017
  }
2980
3018
  const uploadSessions = async (workdir) => {
3019
+ if (valuesNotHeld) {
3020
+ log.error(`${tag} sync skipped: ${VALUES_NOT_HELD}`);
3021
+ return;
3022
+ }
2981
3023
  if (job.container === void 0 && job.microvm === void 0 && job.build?.exec === void 0 && workdirProblem(workdir) !== void 0) {
2982
3024
  log.line(`${tag} sync skipped: workdir ${workdir} is gone`);
2983
3025
  } else if (job.itemKey === void 0) {
@@ -3036,7 +3078,8 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
3036
3078
  log.error(`${tag} removing an earlier attempt's check environment failed: ${describeCallFailure(err)} \xB7 continuing`);
3037
3079
  }
3038
3080
  }
3039
- if (outcome === "ok" && !job.cleanupRan && job.judgeRan !== true) {
3081
+ if (valuesNotHeld && outcome === "ok" && !job.cleanupRan) log.error(`${tag} the host's judge and checks skipped: ${VALUES_NOT_HELD}`);
3082
+ if (outcome === "ok" && !job.cleanupRan && job.judgeRan !== true && !valuesNotHeld) {
3040
3083
  setStage(job, jobDirPath, "judge");
3041
3084
  job.judgeRan = true;
3042
3085
  writeJobFile(jobFilePath, job);
@@ -3051,7 +3094,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
3051
3094
  log.error(`${tag} the host's judge stopped: ${describeCallFailure(err)} \xB7 continuing`);
3052
3095
  }
3053
3096
  }
3054
- if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true) {
3097
+ if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true && !valuesNotHeld) {
3055
3098
  setStage(job, jobDirPath, "checks");
3056
3099
  job.checksRan = true;
3057
3100
  writeJobFile(jobFilePath, job);
@@ -3265,12 +3308,17 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
3265
3308
  writeJobFile(jobFilePath, job);
3266
3309
  }
3267
3310
  const sentAtMs = now().getTime();
3268
- const runnerLog = releaseLogFor(jobDirPath, job, config);
3311
+ const runnerLog = valuesNotHeld ? `The runner sends no log for this attempt: ${VALUES_NOT_HELD}.
3312
+ ` : releaseLogFor(jobDirPath, job, config);
3269
3313
  const detail = outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
3270
3314
  const release = await retrySend(() => releaseLease(config, job.item, outcome, detail, deps.fetchImpl), {
3271
3315
  now: deps.now,
3272
3316
  sleep: deps.sleep
3273
3317
  });
3318
+ if (!release.ok && release.retryable && job.managedVariables !== void 0 && runnerLog !== void 0) {
3319
+ writeFileSync(join(jobDirPath, SCRUBBED_RELEASE_LOG), runnerLog, { mode: RUNNER_FILE_MODE });
3320
+ }
3321
+ dropManagedBuildSettings(jobDirPath);
3274
3322
  const alreadyReleased = release.ok && wasAlreadyReleased(release.value, outcome, sentAtMs);
3275
3323
  const endedAt = now();
3276
3324
  job.outcome = outcome;
@@ -3323,13 +3371,14 @@ async function retryFailedReleases(jobsDirPath, config, deps) {
3323
3371
  if (!job || job.releaseFailed === void 0 || job.releaseFailed === ALREADY_RELEASED || isUnfinished(job)) {
3324
3372
  continue;
3325
3373
  }
3326
- const runnerLog = releaseLogFor(dirPath, job, config);
3374
+ const runnerLog = readScrubbedReleaseLog(dirPath) ?? releaseLogFor(dirPath, job, config);
3327
3375
  const detail = job.outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
3328
3376
  const release = await retrySend(() => releaseLease(config, job.item, job.outcome, detail, deps.fetchImpl), {
3329
3377
  now: deps.now,
3330
3378
  sleep: deps.sleep
3331
3379
  });
3332
3380
  if (release.ok || !release.retryable) {
3381
+ rmSync(join(dirPath, SCRUBBED_RELEASE_LOG), { force: true });
3333
3382
  job.releaseFailed = void 0;
3334
3383
  writeJobFile(jobFilePath, job);
3335
3384
  } else {
@@ -3452,7 +3501,7 @@ function launchFor(config, job, jobDir, deps) {
3452
3501
  if (job.microvm !== void 0) {
3453
3502
  const runtime = deps.runtime ?? createContainerRuntime();
3454
3503
  const cli = deps.cliPath ?? join(runtime.cliBuild().distDir, "index.js");
3455
- return { ...microVmSenderCommand({ job, runtime, config, cli }), cwd: jobDir };
3504
+ return { ...microVmSenderCommand({ job, jobDir, runtime, config, cli }), cwd: jobDir };
3456
3505
  }
3457
3506
  if (job.container !== void 0) {
3458
3507
  return { ...containerSenderCommand({ job, runtime: deps.runtime ?? createContainerRuntime(), config }), cwd: jobDir };
@@ -2,11 +2,11 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
4
  import { detectActiveSession, transcriptPathForSession } from './chunk-IP7BIBXJ.js';
5
- import { autoConnect } from './chunk-7DXVL7TN.js';
5
+ import { autoConnect } from './chunk-IO2BBKG4.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-3N77LUQI.js';
7
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-7QAJQDHS.js';
8
8
  import { readLatestProvenanceForSession } from './chunk-ZJSNLVCE.js';
9
- import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-GSSVJNP2.js';
9
+ import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-Z7WMU3RA.js';
10
10
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
11
11
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
12
12
  import { cliInvocation } from './chunk-CRB3POP4.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { removeRetiredSkills } from './chunk-JWNH4ZTF.js';
4
- import { defaultFetch, resolveGatewayCredentials } from './chunk-3N77LUQI.js';
4
+ import { defaultFetch, resolveGatewayCredentials } from './chunk-7QAJQDHS.js';
5
5
  import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
6
6
  import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-ZQSANKS4.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
8
  import { writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, writeContextManifest, SOURCE_CACHE_TTL_SUCCESS_MS, readSourceCache, isSourceCacheFresh, clearDegraded } from './chunk-YQR6E6OV.js';
9
9
  import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-FGXT5OXS.js';
10
10
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
11
- import { withTokenHeader } from './chunk-G4W4B33M.js';
11
+ import { withTokenHeader } from './chunk-SDAEXUIX.js';
12
12
  import { execFileSync } from 'child_process';
13
13
  import { existsSync, mkdirSync, writeFileSync, chmodSync, lstatSync, readFileSync, copyFileSync } from 'fs';
14
14
  import { isAbsolute, join, dirname } from 'path';