You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
### Fixed
11
+
12
+
-`reactions.ci_failure.watch_window_ms` now rejects a value above `9223372036854` (about 292 years) instead of converting it to a window of a fraction of a millisecond or to no bound at all. `0` still means no time limit. A deployment currently carrying a larger value is refused at startup and by `sortie validate` until the value is lowered.
-`reactions.review_comments`, `reactions.bot_review`, `reactions.merge_conflicts`, and `reactions.auto_merge` now bound a pending entry's age with a per-reaction `watch_window_ms` key instead of a hardcoded thirty-minute constant. The default stays `1800000` (thirty minutes), so a deployment that sets nothing behaves exactly as before; setting `0` removes the bound entirely. A workflow with no `auto_merge`, where a person reviews and merges, will normally want a larger value than the default. The four expiry log records changed their message text and renamed their `ttl_ms` attribute to `window_ms`.
| `max_log_lines` | integer | `50` | Requires restart | Maximum CI log tail lines for prompt injection. `0` disables. Must be non-negative. |
989
-
| `watch_window_ms` | integer | `86400000` | Every tick | Bounds a pending entry's age, measured from the last recorded head. `0` removes the clock bound. Must be non-negative. |
989
+
| `watch_window_ms` | integer | `86400000` | Every tick | Bounds a pending entry's age, measured from the last recorded head. `0` removes the clock bound. Must be non-negative and must not exceed `9223372036854`. |
990
990
991
991
Example:
992
992
@@ -1294,8 +1294,7 @@ merged-or-closed drop branch, so setting `watch_window_ms: 0` leaves a `review_c
1294
1294
until the tracker issue reaches a terminal state, and leaves an `auto_merge` entry polling
1295
1295
until its own merge attempt returns the already-merged disposition. A quoted numeric value
1296
1296
(for example `"1800000"`) is rejected for these four keys, although
1297
-
`reactions.ci_failure.watch_window_ms`accepts one. These four keys also reject a value
1298
-
above `9223372036854`, where `reactions.ci_failure.watch_window_ms` does not.
- `max_retries`must be non-negative for all kinds.
1505
1504
- `escalation`must be `"label"` or `"comment"` for all kinds.
1505
+
- `watch_window_ms`must be non-negative and must not exceed `9223372036854` for `ci_failure`, `review_comments`, `bot_review`, `merge_conflicts`, and `auto_merge`.
1506
1506
- `poll_interval_ms`must be >= `30000` for `review_comments`.
1507
1507
- `debounce_ms`must be non-negative for `review_comments`.
1508
1508
- `max_continuation_turns`must be positive for `review_comments`.
@@ -1523,8 +1523,9 @@ reactions:
1523
1523
- When `provider` is absent or empty, all other fields in the kind sub-object are ignored.
1524
1524
1525
1525
**Where each rule is enforced:** the rules that the config layer owns (reaction key shape,
1526
-
`max_retries`, `escalation`, `escalation_label`, and every `label_commands` rule) run during
1527
-
typed config construction, so `sortie validate` reports them offline. For the kind-specific
1526
+
`max_retries`, `escalation`, `escalation_label`, every `label_commands` rule, and
1527
+
`reactions.ci_failure`'s Extra keys) run during typed config construction, so `sortie validate`
1528
+
reports them offline. For the kind-specific
1528
1529
rules, `sortie validate` runs the `review_comments`, `auto_merge`, `bot_review`,
1529
1530
`merge_conflicts`, and `merge_completion` builders. These are the same builders used when the
1530
1531
orchestrator constructs the reactions at startup, so both paths report the same invalid values.
@@ -3551,6 +3552,8 @@ Each error identifies the offending field path.
3551
3552
|`config: ci_feedback.max_log_lines: invalid integer value: <val>`| Non-integer value for `max_log_lines`. | Use a plain integer (e.g., `50`). |
3552
3553
|`config: ci_feedback.max_log_lines: must be non-negative`| Negative value for `max_log_lines`. | Use `0` (disable log fetching) or a positive integer. |
3553
3554
|`config: ci_feedback.escalation: must be "label" or "comment", got "<val>"`| Invalid escalation strategy. | Use `"label"` or `"comment"`. |
3555
+
|`config: reactions.ci_failure.watch_window_ms: must not exceed 9223372036854 (about 292 years); use 0 for no time limit, got <val>`|`watch_window_ms` exceeds the ceiling. | Lower the value, or use `0` for no time limit. |
3556
+
|`config: reactions.ci_failure.watch_window_ms: must be non-negative, got <val>`| Negative value for `watch_window_ms`. | Use `0` (no time limit) or a positive integer. |
3554
3557
3555
3558
### 9.3 Environment Variable Errors
3556
3559
@@ -3636,6 +3639,7 @@ lists the `SORTIE_*` variable that overrides the field, or "—" if not overrida
3636
3639
|`reactions.<kind>.escalation`| string |`label`| — |`"label"` or `"comment"`; restart required except for `ci_failure`|
3637
3640
|`reactions.<kind>.escalation_label`| string |`needs-human`| — | Applied when `escalation` is `"label"`; restart required except for `ci_failure`|
|`reactions.<kind>.watch_window_ms`| integer |`86400000` for `ci_failure`, `1800000` for the other four | — | Bounds a pending entry's age; non-negative; not above `9223372036854`; `0` removes the bound; restart required except for `ci_failure`|
0 commit comments