-
Notifications
You must be signed in to change notification settings - Fork 0
ci: add Buildkite Tart pipeline #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
751ae86
4e1f908
7f483c9
7aae929
169755f
c74118e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,91 @@ | ||
| env: | ||
| CARGO_TERM_COLOR: always | ||
|
|
||
| steps: | ||
| - label: ":linux: Linux ARM64" | ||
| key: linux-arm64 | ||
| concurrency: 2 | ||
| concurrency_group: "big-cabbage/tart-ci" | ||
| agents: | ||
| queue: "ci-linux-arm64" | ||
| plugins: | ||
| - github.com/Bande-a-Bonnot/tart-ci#v0.1.1: | ||
| image: "ci-linux-arm64-rust-bazel" | ||
| os: "linux" | ||
| always_pull: false | ||
| headless: true | ||
| command: | | ||
| set -euo pipefail | ||
|
|
||
| if [[ -z "$${HOME:-}" || "$$HOME" == "/" ]]; then | ||
| export HOME=/home/admin | ||
| fi | ||
| export CARGO_HOME="$${CARGO_HOME:-$$HOME/.cargo}" | ||
| export RUSTUP_HOME="$${RUSTUP_HOME:-/opt/rustup}" | ||
| export PATH="/usr/local/bin:/opt/cargo/bin:$$CARGO_HOME/bin:$$PATH" | ||
|
|
||
| rustc --version | ||
| cargo --version | ||
| python3 --version | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Running if command -v python3 >/dev/null 2>&1; then
python3 --version
fi |
||
|
|
||
| cd middens | ||
| cargo fmt --check | ||
| cargo test --locked --lib | ||
| cargo test --locked --test cucumber -- --input tests/features/smoke.feature | ||
| cargo build --release --locked | ||
|
|
||
| smoke_output="$$(mktemp -d)" | ||
| smoke_xdg="$$(mktemp -d)" | ||
| XDG_DATA_HOME="$$smoke_xdg" ./target/release/middens analyze tests/fixtures --split --no-python --output "$$smoke_output" | ||
|
Comment on lines
+37
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The temporary directories created via smoke_output="$$(mktemp -d)"
smoke_xdg="$$(mktemp -d)"
trap 'rm -rf "$$smoke_output" "$$smoke_xdg"' EXIT
XDG_DATA_HOME="$$smoke_xdg" ./target/release/middens analyze tests/fixtures --split --no-python --output "$$smoke_output" |
||
| test -f "$$smoke_output/interactive/markov.json" | ||
| test -f "$$smoke_output/subagent/markov.json" | ||
| test -f "$$smoke_output/autonomous/markov.json" | ||
|
|
||
| - label: ":mac: macOS Apple Silicon" | ||
| key: macos-apple-silicon | ||
| concurrency: 2 | ||
| concurrency_group: "big-cabbage/tart-ci" | ||
| agents: | ||
| queue: "ci-macos-apple-silicon" | ||
| plugins: | ||
| - github.com/Bande-a-Bonnot/tart-ci#v0.1.1: | ||
| image: "ghcr.io/cirruslabs/macos-sequoia-base:latest" | ||
| os: "macos" | ||
| always_pull: false | ||
| headless: true | ||
| command: | | ||
| set -euo pipefail | ||
|
|
||
| if [[ -z "$${HOME:-}" ]]; then | ||
| export HOME=/Users/admin | ||
| fi | ||
| export CARGO_HOME="$${CARGO_HOME:-$$HOME/.cargo}" | ||
| export RUSTUP_HOME="$${RUSTUP_HOME:-$$HOME/.rustup}" | ||
| export PATH="$$CARGO_HOME/bin:/opt/homebrew/bin:/usr/local/bin:$$PATH" | ||
|
|
||
| if ! command -v cargo >/dev/null 2>&1; then | ||
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | ||
| | HOME="$$HOME" CARGO_HOME="$$CARGO_HOME" RUSTUP_HOME="$$RUSTUP_HOME" sh -s -- -y --profile minimal --no-modify-path | ||
| . "$$CARGO_HOME/env" | ||
| fi | ||
|
|
||
| if command -v rustup >/dev/null 2>&1; then | ||
| rustup component add rustfmt | ||
| fi | ||
|
|
||
| rustc --version | ||
| cargo --version | ||
| python3 --version | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Running if command -v python3 >/dev/null 2>&1; then
python3 --version
fi |
||
|
|
||
| cd middens | ||
| cargo fmt --check | ||
| cargo test --locked --lib | ||
| cargo test --locked --test cucumber -- --input tests/features/smoke.feature | ||
| cargo build --release --locked | ||
|
|
||
| smoke_output="$$(mktemp -d)" | ||
| smoke_xdg="$$(mktemp -d)" | ||
| XDG_DATA_HOME="$$smoke_xdg" ./target/release/middens analyze tests/fixtures --split --no-python --output "$$smoke_output" | ||
|
Comment on lines
+86
to
+88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The temporary directories created via smoke_output="$$(mktemp -d)"
smoke_xdg="$$(mktemp -d)"
trap 'rm -rf "$$smoke_output" "$$smoke_xdg"' EXIT
XDG_DATA_HOME="$$smoke_xdg" ./target/release/middens analyze tests/fixtures --split --no-python --output "$$smoke_output" |
||
| test -f "$$smoke_output/interactive/markov.json" | ||
| test -f "$$smoke_output/subagent/markov.json" | ||
| test -f "$$smoke_output/autonomous/markov.json" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,11 +1,17 @@ | ||
| # Session Handoff | ||
|
|
||
| **Last updated:** 2026-06-04 (public results trusted smoke/deploy green) | ||
| **Last updated:** 2026-06-09 (Buildkite/Tart CI PR rebased on public-results work) | ||
|
|
||
| Read this at the start of every session. Update before compaction or at natural milestones. | ||
|
|
||
| --- | ||
|
|
||
| ## Current session update — 2026-06-01 | ||
|
|
||
| Started Buildkite/Tart CI migration on branch `chore/buildkite-tart-ci`. Added `.buildkite/pipeline.yml` with two non-credentialed PR jobs using `github.com/Bande-a-Bonnot/tart-ci#v0.1.1`: Linux ARM64 on local image `ci-linux-arm64-rust-bazel`, and macOS Apple Silicon on `ghcr.io/cirruslabs/macos-sequoia-base:latest` with Rust bootstrapped by rustup. The first slice intentionally covers lightweight Middens cross-platform checks: `cargo fmt --check`, `cargo test --locked --lib`, the Cucumber harness smoke feature, `cargo build --release --locked`, and `middens analyze tests/fixtures --split --no-python` with checks for all three stratum outputs. The full Cucumber/HF corpus batteries, scheduled workflows, release artifacts, x86_64 targets, Hugging Face registry/secrets, and large network downloads remain on GitHub Actions/deferred. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Description: Extract the cargo test commands from the Buildkite pipeline configuration
rg -A 2 'cargo test' .buildkite/pipeline.ymlRepository: Lightless-Labs/third-thoughts Length of output: 380 CI test slice matches the handoff wording (lib + cucumber smoke)
🧰 Tools🪛 LanguageTool[grammar] ~11-~11: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) 🤖 Prompt for AI Agents |
||
|
|
||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| Local validation before PR, after merging latest `origin/main`: `cd middens && cargo fmt --check`, `cargo test --locked --lib` (31 unit tests), Cucumber smoke feature, `cargo build --release --locked`, fixture split/no-python smoke, Buildkite YAML parse with Ruby, `bash -n` over both embedded commands after Buildkite dollar escaping, and `git diff --check` all passed. Full `cargo test --locked` was attempted after the latest main merge but exceeded the local harness timeout twice (>20 minutes), so it is intentionally left to the existing GitHub HF/full test workflow rather than the first Tart smoke slice. A small rustfmt-only fix was included for `middens/tests/steps/split.rs` because latest `main` had one formatting drift that would fail the new CI slice. `cargo clippy --all-targets --locked -- -D warnings` was tried before merging latest `main` but is not included in the first CI slice because current code has many pre-existing clippy warnings under the local/newer toolchain. Remote `buildkite-agent pipeline upload --dry-run` on `big-cabbage` was attempted but blocked by intermittent SSH publickey auth from this session; no host/config/image changes were made. Existing GitHub Actions `Build public results site` initially failed on PR #3; Azure-backed log/artifact downloads were unreachable from this workstation, but workflow inspection found a likely artifact path mismatch where downloaded artifacts may contain `site-data/corpora/...` instead of `.tmp/site-data/corpora/...`. The PR branch now accepts both path shapes in the collector; workflow YAML and a local `find` fixture validated. | ||
|
|
||
| ## >>> Read this first <<< | ||
|
|
||
| **All 23 techniques are working. Zero errors, zero timeouts on 13,423 sessions (commit `867f57b`).** | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: Lightless-Labs/third-thoughts
Length of output: 262
🏁 Script executed:
Repository: Lightless-Labs/third-thoughts
Length of output: 5457
🌐 Web query:
tart-ci Bande-a-Bonnot always_pull false💡 Result:
The configuration setting
always_pull: falseis a parameter used in the Tart Buildkite plugin to control how the plugin manages virtual machine images [1]. Whenalways_pullis set tofalse, the plugin will not automatically execute atart pullcommand to update the VM image from the registry before cloning the virtual machine [1]. By default, this value istrue, meaning the plugin typically attempts to pull the latest version of the specified image before proceeding [1]. The "Bande-a-Bonnot" mentioned in your query is a GitHub organization [2]. There is no direct link between a specific "tart-ci" tool and this organization in authoritative documentation; it is likely you are referencing thecirruslabs/tarttool, which is a virtualization solution for macOS and Linux that integrates with CI/CD platforms like Buildkite [3][4][1]. In broader technical contexts, the termalways_pullis also commonly found in other CI/CD integrations (such as Docker GitHub Actions) to determine whether the system should attempt to pull a newer version of an image from a registry [5][6]. When set tofalsein those contexts, it relies on the local version of the image if it is already present [5].Citations:
always_pulldo? docker/build-push-action#55Pin the Tart images to immutable refs.
With
always_pull: falseongithub.com/Bande-a-Bonnot/tart-ci#v0.1.1, the plugin won’t pull/update the specified image before running, so the VM can use whatever version is already cached on each agent. Both steps use tag-based, non-immutable references (ci-linux-arm64-rust-bazelat line 13 andghcr.io/cirruslabs/macos-sequoia-base:latestat line 51); switch bothimage:values to pinned digests (or immutable version tags) to keep CI deterministic.🤖 Prompt for AI Agents