Repository navigation
v0.13.0
v0.13.0 - 2026-08-05
This release makes onboarding and builds work on real customer repositories:
forked Bazel toolchains, LFS-tracked paths, network-restricted hosts, and
fixed-HOME credential helpers are now handled in trusted phases, manifest
ai_task instructions require attested provenance, and subprocess, cache, and
Harbor execution layers are hardened against parallel-load races and hung
cleanup.
Added
--credential-home-file <src>[=<relative-dest>](and the
build.credential_home_file/runner.worktree.credential_home_fileconfig
keys) materialize operator-approved credential files into the replaced HOME
of trusted phases, for tooling that reads fixed HOME paths such as a Bazel
remote-cache credential helper. File bytes are snapshotted at authorization,
written 0700/0600 behind a symlink-refusing join, redacted from Stet-owned
diagnostics, and bound into the run fingerprint; destinations that collide
with Stet-owned agent directories (.claude,.codex,.config/cursor)
are rejected. (30506f8e)
Changed
- Manifest-carried
ai_taskinstructions now require a generation receipt
(ai_task_provenance, or a cleanllm_diagnostics.enrichmentreference for
older manifests). Unattested tasks are skipped as
unattested_ai_task_not_allowed;--allow-unattested-ai-taskadmits them as
a recorded degradation (prompt_regime: unattested-provenance, not
certified READY). (342d0ac0) - Enrichment now emits the manifest
ai_taskas a single outcome-focused
instruction instead of a multi-part template. (5c53988a)
Fixed
- Runtime probes whose output is recognized but unparsable — for example a
fork-suffixedBuild label: 9.1.1-glyd1from a patched Bazel — no longer
abstain with a missing observed-environment fingerprint: the fingerprint
falls back to hashing the raw normalized probe output, and every
empty-fingerprint branch now records an explicit unavailable reason in
parser evidence and the gate message. Genuinely ambiguous output (two or
more distinct version records) still fails closed. (30506f8e) - Materialized Python tasks now probe
python3 --versioninstead of
python --version, matching hosts that ship no barepython. (30506f8e) - Git-LFS smudge is disabled in the disposable object store used for worktree
materialization and when the verifier resets held-out test targets to base,
so repos with LFS-tracked paths build and validate without a reachable LFS
remote even when a global gitconfig declares a required LFS filter.
(30506f8e, 4f387368) - Successful
--source-mode referencebase/head builds now write
build-summary.json; previously the build exited 1 after materializing the
task ("read build summary: … no such file or directory"), which failed CI
wrappers and left eval tooling treating the dataset as incomplete.
(4f387368) - Share the worktree Bazel selector's Bazelisk and repository download caches
across environment-group cohorts under--bazel-cache-root(both are
content-addressed, so cross-cohort reuse is byte-safe). Changing the test
command no longer starts a cohort with a cold repository cache, which on
network-restricted hosts failed the selector asabstained_query_failed.
Repository caches under existing
.stet-bazel-verifier-cache-v1/cohorts/<fingerprint>/trusted/directories
are no longer read, so the new.stet-bazel-verifier-cache-v1/shared/
directory starts cold: on a network-restricted host, warm it once with
network access or copy an existing cohort'strusted/repositorycontents
into.stet-bazel-verifier-cache-v1/shared/repositorybefore the first
post-upgrade run. Stet never deletes an operator-owned
cache root, so reclaim the old per-cohort directories manually if disk
space matters. (f0caded9) - Serialize the worktree Bazel selector's binary-readiness cache and retry
preflights that failed for non-cacheable reasons, so concurrent cohorts no
longer inherit a neighbor's transient failure. (dd8cd346) - Cancel subprocess process groups SIGTERM-first with a bounded force-kill
fallback so buffered agent output is flushed before termination, and bound
Harbor agent execution, Docker cleanup, and Claude command timeouts
explicitly. (fafd5496, e928166f, 904a4a58) - Tolerate never-materialized output roots during completion registration
instead of failing with a rawlstaterror. (ded8db24) - Honor declared test-command overrides for opaque commands and bind the
worktree selector to its final harness authority instet suite build.
(1d33be65, 5c684fdf, b3fbf154) - Make onboarding completion replay idempotent and route target selection
through a deterministic authority. (9222d23b, 60a0e6c2) - Void candidate test verdicts when the gold baseline itself fails, instead
of scoring against a broken baseline. (6b1cb716)
Internal
- Harden R7 head-to-head decision and report authority to fail closed on
stale, contradictory, or asymmetric evidence, and centralize decision
projection (STET-743, plus related eval-report correctness fixes).
(d609fffc, eb2e5da3) - Migrate durable build evidence to a single revisioned writer core with
secured provenance and path reads (STET-729). (96b5be9c, cf28669a) - Add deterministic live-scenario validation lanes that prove worktree,
Docker, Harbor, and Windows execution boundaries before release
(STET-732–STET-767). (c919a690, 207089c5)