Commit 968af0d
authored
fix(sandbox): supervise preview source sync (#213)
## Why
A transient Daytona FUSE read denial could terminate the
durable-to-native source synchronizer while the Vite child stayed
healthy. Process reuse then saw a live port and returned a permanently
stale preview.
## What changed
- Retry transient durable-source read failures immediately and within a
bounded grace period.
- Treat the app and synchronizer as one managed process unit; a dead
synchronizer terminates the app so the existing bounded supervisor
restarts both.
- Extend immutable snapshot smoke checks to cover transient recovery,
live source propagation, and sync-child failure.
- Document the managed-preview liveness contract at the sandbox and
agent-worker boundaries.
## Verification
- `pnpm lint`
- `pnpm typecheck`
- `pnpm turbo build --force`
- `pnpm deadcode`
- `pnpm architecture:check`
- `pnpm turbo skills:build`
- Local lifecycle smoke: simulated the observed `EPERM`, verified source
recovery, verified live update propagation, killed the sync child, and
confirmed the preview parent exited non-zero.
All repository commands ran with Node 24.18.0 and pnpm 11.15.0.
Production browser QA follows immutable snapshot publication and
promotion.1 parent 680f5fa commit 968af0d
4 files changed
Lines changed: 188 additions & 19 deletions
File tree
- .github/workflows
- apps/agent-worker
- infra/containers/sandbox
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
152 | 215 | | |
153 | 216 | | |
154 | 217 | | |
| |||
175 | 238 | | |
176 | 239 | | |
177 | 240 | | |
178 | | - | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
179 | 244 | | |
180 | | - | |
181 | | - | |
| 245 | + | |
| 246 | + | |
182 | 247 | | |
183 | 248 | | |
184 | 249 | | |
| |||
194 | 259 | | |
195 | 260 | | |
196 | 261 | | |
197 | | - | |
| 262 | + | |
198 | 263 | | |
199 | 264 | | |
200 | 265 | | |
| |||
209 | 274 | | |
210 | 275 | | |
211 | 276 | | |
212 | | - | |
| 277 | + | |
213 | 278 | | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | 279 | | |
218 | 280 | | |
219 | 281 | | |
220 | 282 | | |
221 | 283 | | |
222 | 284 | | |
223 | 285 | | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
224 | 308 | | |
225 | 309 | | |
226 | 310 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
167 | 167 | | |
168 | 168 | | |
169 | 169 | | |
170 | | - | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
171 | 175 | | |
172 | 176 | | |
173 | 177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
110 | 114 | | |
111 | 115 | | |
112 | 116 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| 20 | + | |
19 | 21 | | |
20 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
21 | 34 | | |
22 | 35 | | |
23 | 36 | | |
| |||
136 | 149 | | |
137 | 150 | | |
138 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
139 | 174 | | |
140 | 175 | | |
| 176 | + | |
| 177 | + | |
141 | 178 | | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
148 | 211 | | |
149 | 212 | | |
150 | | - | |
| 213 | + | |
151 | 214 | | |
152 | 215 | | |
153 | 216 | | |
| |||
415 | 478 | | |
416 | 479 | | |
417 | 480 | | |
418 | | - | |
| 481 | + | |
419 | 482 | | |
420 | 483 | | |
421 | 484 | | |
| |||
442 | 505 | | |
443 | 506 | | |
444 | 507 | | |
445 | | - | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
446 | 523 | | |
447 | 524 | | |
448 | 525 | | |
| |||
0 commit comments