Skip to content

Commit 3a2456b

Browse files
committed
docs(adr): ADR-017 — agent-session spike re-run resolves the 10s-vs-long-compute risk (UX.24)
After the app owner enabled 'Agent session events': - agentSessionCreateOnIssue now succeeds (status active). - 10s risk RESOLVED: thought at t+0 → active, then a 14s no-activity gap → STILL active (not stale). The 10s rule is initial-ack-only; our webhook emits the thought synchronously like today's 👀, then the >10s async spawn proceeds — no architectural conflict. - Full lifecycle derives: thought/action→active, response→complete, elicitation→awaitingInput, error→error (all 5 types accepted; states auto-derive). Maps 1:1 to the aws-samples#247 ack model. Remaining gate for an additive channel is the per-issue-session vs cross-issue-epic-rollup gap + Preview→GA wait, NOT a technical blocker. Spike issues created+deleted; token scrubbed; no migration code.
1 parent 161d1fa commit 3a2456b

2 files changed

Lines changed: 54 additions & 6 deletions

File tree

docs/decisions/ADR-017-linear-agent-session-interaction.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,33 @@ probes + mutation input validation, no migration code:
9898
ack within 10s is sufficient, which our processor can emit synchronously
9999
before the async spawn — same shape as today's 👀).
100100

101-
Net: the spike de-risked reachability + the activity model and pinpointed the
102-
single enablement step, without committing to migration. Re-run the
103-
session-create + timed-activity sequence once the app is enabled.
101+
Net (first pass): the spike de-risked reachability + the activity model and
102+
pinpointed the single enablement step, without committing to migration.
103+
104+
**Spike re-run (2026-06-17, after the app owner enabled "Agent session events")
105+
— the core risk is RESOLVED end-to-end:**
106+
107+
- `agentSessionCreateOnIssue` now succeeds → session `status: active`.
108+
- **The 10s-vs-long-compute question is answered:** emit a `thought` at t+0
109+
(status `active`), then **wait 14s with no further activity** → session
110+
**stays `active`** (not stale/unresponsive). The 10s rule governs only the
111+
*initial* ack; once a `thought` lands, an arbitrarily long gap before the
112+
next activity is fine. ABCA's webhook can emit the `thought` synchronously
113+
(exactly like today's 👀) and let the >10s async spawn proceed — **no
114+
architectural conflict.**
115+
- **Full lifecycle derives correctly**, matching the mapping table below:
116+
`thought`→active, `action`→active, `action`+result→active,
117+
`response`**complete**; on a second session `elicitation`**awaitingInput**,
118+
`error`**error**. All five emittable types accepted; states auto-derive
119+
from the last activity. (`AgentActivityContent` is a union —
120+
`AgentActivityActionContent`/`…ElicitationContent`/`…ErrorContent`/etc. — so
121+
each type persists as a distinct typed record.)
122+
123+
Conclusion: the **trigger/ack half is fully validated** against the live
124+
Preview API. The remaining gate for an actual additive channel is unchanged —
125+
it's the per-issue-session vs. cross-issue-epic-rollup gap (engine stays ours)
126+
plus the Preview→GA stability wait, NOT any technical blocker we found. The
127+
spike issues were created + deleted; no migration code written.
104128

105129
### Why a channel, not a rewrite
106130

docs/src/content/docs/decisions/Adr-017-linear-agent-session-interaction.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,33 @@ probes + mutation input validation, no migration code:
102102
ack within 10s is sufficient, which our processor can emit synchronously
103103
before the async spawn — same shape as today's 👀).
104104

105-
Net: the spike de-risked reachability + the activity model and pinpointed the
106-
single enablement step, without committing to migration. Re-run the
107-
session-create + timed-activity sequence once the app is enabled.
105+
Net (first pass): the spike de-risked reachability + the activity model and
106+
pinpointed the single enablement step, without committing to migration.
107+
108+
**Spike re-run (2026-06-17, after the app owner enabled "Agent session events")
109+
— the core risk is RESOLVED end-to-end:**
110+
111+
- `agentSessionCreateOnIssue` now succeeds → session `status: active`.
112+
- **The 10s-vs-long-compute question is answered:** emit a `thought` at t+0
113+
(status `active`), then **wait 14s with no further activity** → session
114+
**stays `active`** (not stale/unresponsive). The 10s rule governs only the
115+
*initial* ack; once a `thought` lands, an arbitrarily long gap before the
116+
next activity is fine. ABCA's webhook can emit the `thought` synchronously
117+
(exactly like today's 👀) and let the >10s async spawn proceed — **no
118+
architectural conflict.**
119+
- **Full lifecycle derives correctly**, matching the mapping table below:
120+
`thought`→active, `action`→active, `action`+result→active,
121+
`response`**complete**; on a second session `elicitation`**awaitingInput**,
122+
`error`**error**. All five emittable types accepted; states auto-derive
123+
from the last activity. (`AgentActivityContent` is a union —
124+
`AgentActivityActionContent`/`…ElicitationContent`/`…ErrorContent`/etc. — so
125+
each type persists as a distinct typed record.)
126+
127+
Conclusion: the **trigger/ack half is fully validated** against the live
128+
Preview API. The remaining gate for an actual additive channel is unchanged —
129+
it's the per-issue-session vs. cross-issue-epic-rollup gap (engine stays ours)
130+
plus the Preview→GA stability wait, NOT any technical blocker we found. The
131+
spike issues were created + deleted; no migration code written.
108132

109133
### Why a channel, not a rewrite
110134

0 commit comments

Comments
 (0)