Releases: caty-ai/alpha-nightshift
Release list
v0.7.0 — loom runner template tests/run.sh, runner-parity lint gate, docs
v0.7.0 — loom runner template tests/run.sh, runner-parity lint gate, docs
Adopts the alpha-loom v0.9.2 shell-file-v1 runner contract: tests/run.sh
(same discovery, contract table and verdict rule as tests/run_tests.sh;
accepts only --loom-server-verifier; never reads the census; emits the
suites: declared=N executed=N skipped=N line exactly once from the EXIT
trap; neutralises nested summary lines; byte-safe replay), a runner-parity
gate in make lint and CI, and engineering docs for the loom residuals.
Registration of the loom profile and loom-profile.pin are tracked in
caty-ai/alpha-nightshift-dev#81.
Evidence: PR #33 (completion
record; 3-seat cumulative GO on 6874637; host full runs 45/45 x4; CI guard
https://github.com/caty-ai/alpha-nightshift/actions/runs/34060092526).
v0.6.7 — review lane timebox re-check, health clone.log pre-create, docs
Review lane (#79): run_with_watchdog() re-checks kill -0 immediately before marking a timeout, so a seat that already exited at the timebox edge is reported with its real exit code instead of 124; a truly hung seat still gets stop_seat_tree and 124. Behaviour note: a seat that exits at the boundary but leaves a live descendant is reported as 125 (not 124); the tree is still killed. Deterministic boundary test via a BASH_ENV fake clock.
Health lane: evidence/clone.log is pre-created so an unwritable evidence/ is reported as evidence-log-unwritable (not clone-failed); the second pgrep -g read in stop_remaining_tree is fail-closed (rc>1 → unconditional group KILL). Docs: Makefile detection is a test: target (test:= excluded); evidence-unwritable upgrades exit 0/3 to 1.
Evidence: PR #32 (completion record; Kimi/Grok/Opus GO), guard run https://github.com/caty-ai/alpha-nightshift/actions/runs/34046927692
v0.6.6 — health lane hardening (single selection fn, leftover-only reaping, reason tokens)
Health lane (#76): one candidate_source() for preflight and selection; stop_remaining_tree() signals only live leftovers after a normal exit; timebox boundary re-check; Makefile detection ignores test:= and refuses to run without make (no fabricated finding); IFS/nullglob restored; error() takes a short reason token (health.json.reason machine-readable); finish() still writes health.json when the evidence manifest is unwritable.
Evidence: PR #30 (completion record; Kimi/Grok/Opus GO), guard run https://github.com/caty-ai/alpha-nightshift/actions/runs/34011132038
v0.6.5 — test harness verdict rule
tests/run_tests.sh now counts a suite as PASS only when it exits 0 AND prints its verdict line (': PASS' exactly, or a line starting with 'PASS ('). A suite that dies silently with exit 0 is reported as 'FAIL (no verdict line)'. Output is captured in memory and replayed before the verdict (no temp file, no fd 3, portable to Linux). New suite test_run_tests_harness.sh (census 45). Seats: GLM 5.3 / Opus 5 / Grok 4.6 cumulative GO over three rounds. PR #29 squash ee23ffc (-dev#73).
v0.6.4 — digest names the rotation target and health result
The morning digest now prints, under レーン統計, one line per lane artifact: 'review rotation: (previous <night|none>, refresh <ok|failed|skipped>)' from lane_N/rotation.json and 'health: runner=… result=… failures=n/m[ reason=…]' from lane_N/health.json (#69). Present-but-broken artifacts print 'unreadable (lane_N)'; artifact-free nights render exactly as before. Strings capped at 120 chars; empty identifiers and symlinked lane dirs are refused fail-visibly. Seats: GLM 5.3 / Opus 5 / Grok 4.6 cumulative GO. PR #27 squash 223511f (-dev#70).
v0.6.3 — health lane (generic test runner on the rotation target)
New lanes/health/run.sh: clones the repository the review rotation picked tonight, detects or takes an explicit test runner (HEALTH_TEST_CMD / HEALTH_SUITE_GLOB / make test / tests/run.sh / tests/run_tests.sh), runs it under a timebox with process-tree kill, and emits one test-failure finding per failing suite in the ledger schema. NO-INPUT nights are fail-visible (exit 3, health.json, lane.log). Also: bare-mirror test for rotate.sh, HEALTH_* settings in docs and the config example, suite census 44. Seats: GLM 5.3 / Grok 4.6 GO, Opus 5 GO-WITH-CHANGES (leftovers in -dev#76). PR #26 squash c62a549 (-dev#69).
v0.6.2 — metsuke codex seat sandbox flag
v0.6.1 — watchdog timing check budget
tests/test_lane_review_runtime.sh: the two-second watchdog case is bounded by REVIEW_TEST_WATCHDOG_BUDGET_SEC (default 60, validated) and the kill is proven by run.log markers instead of wall clock, ending the hosted macos-15 flake (-dev#74, #21, #23). Seats: GLM 5.3 / Opus 5 / Grok 4.6 all GO. PR #25 squash 774c4a3.
v0.6.0 — digest: Lane status section from a configurable external reporter
v0.6.0 — digest: Lane status section from a configurable external reporter
The morning digest gains a "Lane status" section fed by LANE_STATUS_CMD: counts plus capped lists of default-branch
CI reds, human-owned lanes and stale lanes, a documented tool-agnostic JSON contract, six fail-visible paths that never
change the digest exit code, raw JSON saved under state/digests// (0600), and an isolated launch frame
(env -i, quarantined HOME, GH_CONFIG_DIR carve-out, set -m process-tree kill, ulimit-bounded output).
Evidence: PR #20 (completion record L1-7, candidate 3abdf95), CI runs
https://github.com/caty-ai/alpha-nightshift/actions/runs/33956820520 (guard) and
https://github.com/caty-ai/alpha-nightshift/actions/runs/33956820731 (test-lint), Issue #16 (design freeze,
implementation records). Design: docs/digest-lane-status.md v1.3.
v0.5.1 — review seat adapters
codex seat: --full-auto (removed in codex CLI v0.153) → --sandbox read-only. glm seat: accept NAME=value first line in GLM_KEY_FILE (bare key still accepted; export/quoted/multi-= rejected explicitly; key never echoed), default model glm-5.3. Both seats had been exiting before doing any work nightly (glm since at least 2026-09-02). Runtime suite is bash-3.2-safe with a truncation guard. Issue: caty-ai/alpha-nightshift-dev#71 · PR: #18 · Reviews: GLM 5.3 / Grok 4.6 / Opus 5 (delta GO/GO/GO). Follow-ups: #72 #73 #74.