Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Trajectory: Retry transient Relaycast workspace_busy admission failures

> **Status:** ✅ Completed
> **Confidence:** 92%
> **Started:** September 10, 2026 at 12:33 AM
> **Completed:** September 10, 2026 at 12:42 AM

---

## Summary

Added bounded Relaycast workspace_busy startup/admission retry with diagnostics-preserving exhaustion tests, unrelated-429 terminal coverage, explicit fail-closed session boundary documentation, and a patch changelog entry.

**Approach:** Standard approach

---

## Key Decisions

### Retry only the exact HTTP 429 workspace_busy admission code
- **Chose:** Retry only the exact HTTP 429 workspace_busy admission code
- **Reasoning:** Generic 429s may represent credential or quota policy and must remain terminal; RelayError 8.0.0 does not retain Retry-After, so the existing bounded 200ms/400ms startup backoff is the safest available fallback.

### Keep complete startup handshake fail-closed after admission retry exhaustion
- **Chose:** Keep complete startup handshake fail-closed after admission retry exhaustion
- **Reasoning:** Replaying startup would repeat unkeyed workspace and agent registration POSTs and could create duplicate or orphaned identities.

---

## Chapters

### 1. Work
*Agent: default*

- Retry only the exact HTTP 429 workspace_busy admission code: Retry only the exact HTTP 429 workspace_busy admission code
- Keep complete startup handshake fail-closed after admission retry exhaustion: Keep complete startup handshake fail-closed after admission retry exhaustion
- The broker now retries exact workspace_busy admission failures at the request boundary, while preserving terminal behavior for unrelated 429s and complete-handshake replay safety. Focused, full broker library tests and clippy are green.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"id": "traj_q7a7m644yvsi",
"version": 1,
"task": {
"title": "Retry transient Relaycast workspace_busy admission failures"
},
"status": "completed",
"startedAt": "2026-09-09T22:33:18.944Z",
"completedAt": "2026-09-09T22:42:11.347Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-09-09T22:42:04.687Z"
}
],
"chapters": [
{
"id": "chap_73p4he5ty41v",
"title": "Work",
"agentName": "default",
"startedAt": "2026-09-09T22:42:04.687Z",
"endedAt": "2026-09-09T22:42:11.347Z",
"events": [
{
"ts": 1788993724688,
"type": "decision",
"content": "Retry only the exact HTTP 429 workspace_busy admission code: Retry only the exact HTTP 429 workspace_busy admission code",
"raw": {
"question": "Retry only the exact HTTP 429 workspace_busy admission code",
"chosen": "Retry only the exact HTTP 429 workspace_busy admission code",
"alternatives": [],
"reasoning": "Generic 429s may represent credential or quota policy and must remain terminal; RelayError 8.0.0 does not retain Retry-After, so the existing bounded 200ms/400ms startup backoff is the safest available fallback."
},
"significance": "high"
},
{
"ts": 1788993726731,
"type": "decision",
"content": "Keep complete startup handshake fail-closed after admission retry exhaustion: Keep complete startup handshake fail-closed after admission retry exhaustion",
"raw": {
"question": "Keep complete startup handshake fail-closed after admission retry exhaustion",
"chosen": "Keep complete startup handshake fail-closed after admission retry exhaustion",
"alternatives": [],
"reasoning": "Replaying startup would repeat unkeyed workspace and agent registration POSTs and could create duplicate or orphaned identities."
},
"significance": "high"
},
{
"ts": 1788993728782,
"type": "reflection",
"content": "The broker now retries exact workspace_busy admission failures at the request boundary, while preserving terminal behavior for unrelated 429s and complete-handshake replay safety. Focused, full broker library tests and clippy are green.",
"raw": {
"confidence": 0.92
},
"significance": "high",
"tags": [
"confidence:0.92"
]
}
]
}
],
"retrospective": {
"summary": "Added bounded Relaycast workspace_busy startup/admission retry with diagnostics-preserving exhaustion tests, unrelated-429 terminal coverage, explicit fail-closed session boundary documentation, and a patch changelog entry.",
"approach": "Standard approach",
"confidence": 0.92
},
"commits": [],
"filesChanged": [],
"projectId": "AgentWorkforce/relay",
"tags": [],
"_trace": {
"startRef": "4306bb29be696ec84a4e3844f86fdc4a91584407",
"endRef": "4306bb29be696ec84a4e3844f86fdc4a91584407"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Trajectory: Add RelayFlow proof for workspace_busy startup admission

> **Status:** ✅ Completed
> **Confidence:** 90%
> **Started:** September 10, 2026 at 12:57 AM
> **Completed:** September 10, 2026 at 12:57 AM

---

## Summary

Added workspace-busy-startup-retry-429 RelayFlow proof covering baseline failure, head retry success, unrelated 429 terminal behavior, bounded exhaustion, and no whole-handshake replay.

**Approach:** Standard approach

---

## Key Decisions

### Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server
- **Chose:** Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server
- **Reasoning:** This gives deterministic base/head evidence for exact 429 workspace_busy behavior while checking unrelated 429 terminal handling and bounded request-scoped exhaustion without replaying registration.

---

## Chapters

### 1. Work
*Agent: default*

- Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server: Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server
- The cleanroom proof distinguishes the pre-fix terminal 429 from the retrying head and confirms unrelated throttles remain terminal; both compiled binaries passed their intended arm.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
"id": "traj_zylcy1hl0sus",
"version": 1,
"task": {
"title": "Add RelayFlow proof for workspace_busy startup admission"
},
"status": "completed",
"startedAt": "2026-09-09T22:57:20.071Z",
"completedAt": "2026-09-09T22:57:35.297Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-09-09T22:57:31.069Z"
}
],
"chapters": [
{
"id": "chap_rsah9jnq4u84",
"title": "Work",
"agentName": "default",
"startedAt": "2026-09-09T22:57:31.069Z",
"endedAt": "2026-09-09T22:57:35.297Z",
"events": [
{
"ts": 1788994651070,
"type": "decision",
"content": "Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server: Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server",
"raw": {
"question": "Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server",
"chosen": "Used a dedicated real-broker RelayFlow case with an ephemeral HTTP admission server",
"alternatives": [],
"reasoning": "This gives deterministic base/head evidence for exact 429 workspace_busy behavior while checking unrelated 429 terminal handling and bounded request-scoped exhaustion without replaying registration."
},
"significance": "high"
},
{
"ts": 1788994653138,
"type": "reflection",
"content": "The cleanroom proof distinguishes the pre-fix terminal 429 from the retrying head and confirms unrelated throttles remain terminal; both compiled binaries passed their intended arm.",
"raw": {
"focalPoints": [
"base-head proof",
"request bounds",
"diagnostics"
],
"confidence": 0.9
},
"significance": "high",
"tags": [
"focal:base-head proof",
"focal:request bounds",
"focal:diagnostics",
"confidence:0.9"
]
}
]
}
],
"retrospective": {
"summary": "Added workspace-busy-startup-retry-429 RelayFlow proof covering baseline failure, head retry success, unrelated 429 terminal behavior, bounded exhaustion, and no whole-handshake replay.",
"approach": "Standard approach",
"confidence": 0.9
},
"commits": [],
"filesChanged": [],
"projectId": "AgentWorkforce/relay",
"tags": [],
"_trace": {
"startRef": "8f1f4059716d1a9aad91eaa18f33c4dceadd454a",
"endRef": "8f1f4059716d1a9aad91eaa18f33c4dceadd454a"
}
}
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ All notable changes to Agent Relay will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [Unreleased - Patch]

### Fixed

- `agent-relay node up` now retries the narrowly transient Relaycast `workspace_busy` admission response while keeping unrelated rate limits terminal.

## [11.10.4] - 2026-09-08

Expand Down
Loading
Loading