- Add target_url to StatusUpdate for linking commit statuses to PR comments
- StatusReporter can now find open PRs, post markdown comments with job output,
and re-post pipeline status with target_url pointing to the comment
- On job failure, commit status description includes last ~10 output lines
- Pipeline completion triggers a PR comment with <details> per job showing
up to 100 lines of output
- Add ureq json feature for Forgejo API response parsing
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
Read stdout and stderr concurrently (background thread for stderr)
to prevent the classic deadlock where cargo blocks writing stderr
while the parent blocks reading stdout. Timeout now actually kills
the child process via kill -9. Added eprintln logging for all job
lifecycle events so failures are visible in local-runner.log.
Also switches .ci.yml to use $HOME instead of ~ for shell portability.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
Add ci-relay (VPS webhook receiver) and local-runner (Thinkpad CI
executor) crates that communicate over iroh. Includes .ci.yml smoke
test pipeline, simulation tests, and development docs.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
Content addressable datastore. Allows you to configure a node to store and stream large blobs of data, and retrieve them from any swactor-connected node.
Co-authored-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
Co-committed-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
Iroh gives us a lot as a transport layer. Lets make use of it.
Co-authored-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
Co-committed-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
Runtime dashboard now features a TUI option and an interface for LLM tool use. Removed some bloat from stats collecting and replaced with a hook function to dump runtime stats into.
Adds some basic benchmarking, stress tests. They still need to be properly examined to ensure they are testing the correct properties, but fit for "good enough". Implements the HybridChannel type, which features a channel buffer that can withstand overflows. It does so by providing a dequeue behind a mutex. Without overflow, will push messages into the lock free ArrayQueue implemented by crossbeam_queue; when that buffer fills, will use the locking portion provided by the Mutex<VecDequeue>.
In the future we can even further optimize this, perhaps with some linked list implementations of lock-free channels, but, like the benchmarks, this fits the "good enough" bar for now.