@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 1.4.0] - 2026-04-04
11+
12+ ### Added
13+
14+ - CI feedback loop: when a CI pipeline fails on an agent-created branch,
15+ the orchestrator detects the failure, injects the CI failure logs into
16+ the next agent turn, and dispatches a continuation session so the agent
17+ can diagnose and fix the issue automatically. Controlled by a new
18+ ` ci_feedback ` config section in ` WORKFLOW.md ` (` kind ` , ` max_retries ` ,
19+ ` max_log_lines ` , ` escalation ` ). Feature activation follows kind-based
20+ convention: present ` ci_feedback.kind ` enables, absent disables.
21+ - ` CIStatusProvider ` domain interface: adapter contract for fetching CI
22+ check status from an SCM platform. Returns structured ` CIResult ` with
23+ overall status (pending/passing/failing), individual check runs, and
24+ an optional log excerpt from the first failing check.
25+ - GitHub ` CIStatusProvider ` implementation via the Checks API: fetches
26+ check runs for a git ref, computes aggregate status, and retrieves
27+ truncated log output from the first failing GitHub Actions job. Log
28+ fetching is controlled by ` max_log_lines ` (0 disables). ANSI escape
29+ sequences are stripped from log output.
30+ - CI failure escalation: when ` ci_feedback.max_retries ` is exceeded, the
31+ orchestrator applies a configurable escalation action -- add a label
32+ (default ` needs-human ` ) or post a comment on the issue.
33+ - Exponential backoff for CI pending re-enqueue: ` reconcileCIStatus `
34+ now applies ` base * 2^attempts ` backoff (capped at 5 minutes) when CI
35+ checks remain pending or on transient API errors, reducing GitHub
36+ Checks API request volume from ~ 120 to ~ 15 per 20-minute CI run per
37+ issue. Stale pending entries expire after a 30-minute TTL.
38+ - ` TrackerOpsWg ` shutdown drain: fire-and-forget tracker API goroutines
39+ (comment posting, label adding) are now tracked by a dedicated
40+ ` sync.WaitGroup ` and drained during graceful shutdown with a 35-second
41+ timeout, preventing orphaned goroutines on process exit.
42+ - Automatic credential merging: when ` ci_feedback.kind ` matches
43+ ` tracker.kind ` , the orchestrator merges tracker credentials (` api_key ` ,
44+ ` project ` , ` endpoint ` ) into the CI provider adapter config at startup,
45+ eliminating the need to duplicate credentials in a pass-through block.
46+
1047## [ 1.3.0] - 2026-04-03
1148
1249### Added
@@ -445,7 +482,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
445482 execution via GitHub Actions.
446483- Architecture Decision Records (ADR-0001 through ADR-0005).
447484
448- [ Unreleased ] : https://github.com/sortie-ai/sortie/compare/1.3.0...HEAD
485+ [ Unreleased ] : https://github.com/sortie-ai/sortie/compare/1.4.0...HEAD
486+ [ 1.4.0 ] : https://github.com/sortie-ai/sortie/compare/1.3.0...1.4.0
449487[ 1.3.0 ] : https://github.com/sortie-ai/sortie/compare/1.2.1...1.3.0
450488[ 1.2.1 ] : https://github.com/sortie-ai/sortie/compare/1.2.0...1.2.1
451489[ 1.2.0 ] : https://github.com/sortie-ai/sortie/compare/1.1.0...1.2.0
0 commit comments