also looking at this
fix: separate native runtime builds from test deadlines
#69
10 files
+399
-14
| @@ -28,6 +28,35 @@ stream. Native Stacks process capture drains stdout and stderr concurrently and | ||
| 28 | 28 | cleans up the owned process group on POSIX before reporting failure. This also |
| 29 | 29 | applies to SDK inspection and Pico 2 builds; it does not install firmware. |
| 30 | 30 | |
| 31 | Native runtime and sensor tests await build initialization before their test timers | |
| 32 | start. An unrelated setup hook must not interrupt the build API's owned command | |
| 33 | cleanup. Runtime response and test deadlines are unchanged. Build failures identify | |
| 34 | the configure, compile, contracts or SDK inspection stage. | |
| 35 | ||
| 36 | CI also compiles a fresh disposable source copy whose real CMake configure takes | |
| 37 | at least 21 seconds, crossing the former 20-second setup hook. It then runs the | |
| 38 | original Linux full-input FIFO case, retains real tool exit observations and checks | |
| 39 | that no owned tool groups remain. Run the same qualification locally with a new | |
| 40 | evidence directory: | |
| 41 | ||
| 42 | ```sh | |
| 43 | bun scripts/qualify-runtime-cold-build.ts /absolute/path/to/new-cold-build-evidence | |
| 44 | ``` | |
| 45 | ||
| 46 | On macOS the qualification uses the native boot/clean-exit case; the kernel FIFO | |
| 47 | case is Linux-only. The qualification retains its owned source and logs, including | |
| 48 | failures. It does not access a board or measure flight timing. | |
| 49 | ||
| 50 | The qualification supervisor derives its aggregate budget from the three separate | |
| 51 | 120-second build commands, their settlement allowance, the selected test's existing | |
| 52 | deadline and startup allowance. It captures at most 2 MB per stream concurrently, | |
| 53 | retains failed output and checks both parent and recorded tool process groups. | |
| 54 | This test-only aggregate budget does not extend the build API or runtime deadlines. | |
| 55 | CI separately interrupts the actual test parent while CMake is active and makes | |
| 56 | the early capture receipt path a directory. That expected reporting refusal must | |
| 57 | still retain its error and settle the recorded detached tool group. Run it with | |
| 58 | `--interrupt-before-capture-report` after a new evidence directory argument. | |
| 59 | ||
| 31 | 60 | ```sh |
| 32 | 61 | ./buddy runtime:build |
| 33 | 62 | ./buddy runtime:bench --ticks 1000 |