CI Pipeline / best-practices (push) Successful in 8s
Auto-version and Release / release (push) Failing after 14s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / lint (push) Failing after 34s
CI Pipeline / canary (push) Successful in 37s
CI Pipeline / type-check (push) Successful in 31s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / unit-tests (push) Successful in 1m4s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Successful in 48s
CORRECTION 1: #314 reopened — recall_with_associations mode field defect CONFIRMED in current source and FIXED (mode: association_merged). CORRECTION 3: Gitea credential removed from remote URL (credential helper). TOKEN EXPOSED: yes (in diagnostic output). TOKEN ROTATED: not yet (requires Gitea web UI access). Remote URL now shows username only, no secret. CORRECTION 4: duplicate-release-commit defect ROOT CAUSE: convergence computed warranted bump from commits-since-tag without checking if master version already satisfies the bump. FIX: already-converged guard in version_convergence.py (master version > last tag → no commit). Repo-aware (args.repo passed to read_version/latest_tag). CORRECTION 6: lifecycle terminalization — execution exception now guarantees task terminalizes as failed with evidence (no immortal RUNNING). CORRECTION 7: route instruction task-scoped on RuneTask.route_instruction (NOT shared operator state). Read-only leading-verb override. Isolation tests prove no cross-contamination between interleaved tasks. PL1-01/02/03/05: pl1_records.py (route resolution, proof level, failure class, candidate status), metrics with honest NOT_YET_MEASURABLE semantics, route-instruction learning loop (PE-1789102658-0269 SEED). 1253 tests green; ratchet 352/80 (shrink); henxels clean.
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
"""Canary wrapper: the orchestration spine is alive and single-authority."""
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_canary_script_runs_clean():
|
|
result = subprocess.run(
|
|
[sys.executable, str(ROOT / "src/rune/canary_orchestration_foundation.py")],
|
|
capture_output=True,
|
|
text=True,
|
|
timeout=60,
|
|
)
|
|
assert result.returncode == 0, result.stderr
|
|
assert "FOUNDATION CANARY PASSED" in result.stdout
|
|
|
|
|
|
def test_docs_exist_and_reference_real_paths():
|
|
docs = (ROOT / "docs/orchestration-foundation.md").read_text()
|
|
assert "src/rune/orchestration/" in docs
|
|
assert "pytest" in docs
|
|
# Regression guard: the documented suite command must stay collection-safe
|
|
# in this environment (test_message_widgets.py requires the optional
|
|
# 'textual' dependency and otherwise aborts pytest at import time).
|
|
assert "--ignore=tests/test_message_widgets.py" in docs
|
|
assert "PYTHONPATH=src:. python3 src/rune/canary_orchestration_foundation.py" in docs
|