Skip to content

feat(compass-agent): surface error/abort content as SessionError trace frames (RIG-2616 T2) - #850

Open
rigel-mintaka wants to merge 1 commit into
compass-agent/rig-3209-session-error-protofrom
compass-agent/rig-3210-session-error-mapper
Open

feat(compass-agent): surface error/abort content as SessionError trace frames (RIG-2616 T2)#850
rigel-mintaka wants to merge 1 commit into
compass-agent/rig-3209-session-error-protofrom
compass-agent/rig-3210-session-error-mapper

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 2 PRs:

  1. main
  2. feat(proto): add SessionError to the compass.v1 session-trace contract (RIG-2616 T1) #846
  3. "feat(compass-agent): surface error/abort content as SessionError trace frames (RIG-2616 T2)" (this PR)

Rewrite the event mapper's inner-error arm to emit the SessionError content
surfaced by T1, and route it on the FrameSink never-drop lane:

  • reason=error emits SessionError(ERROR) content THEN preserves the ERRORED
    lifecycle transition (board/presence/delivery key off ERRORED); reason=aborted
    emits SessionError(ABORTED) only, no transition, replacing the prior counted
    UnmappedEvent staging (DL-322).
  • A new isSessionError classifier lifts the SessionError trace frame onto the
    never-drop PRIORITY lane, matching the SessionInjection carve-out, so surfaced
    failure content is as durable-on-the-spine as the lifecycle transition it
    reports (DL-323).

Red-green: the mapper describe block is rewritten to the new two-frame/one-frame
contract with status presence, and a frame-sink priority-lane test covers both
kinds; both red-checked. Also renumbers this record's two colliding ledger rows
(DL-319 to DL-322, DL-320 to DL-323 -- a concurrent-merge window duplicated an
earlier-dated UI record's ids) and annotates the frozen record header with the
mapping.

Stacked on RIG-3209 T1.

Ledger-impact: renumber DL-319 to DL-322 (emit rule) and DL-320 to DL-323 (FrameSink never-drop routing); no new rows.

Co-authored-by: Matt Wilkinson matt@rigel.build

…e frames (RIG-2616 T2)

Rewrite the event mapper's inner-error arm to emit the SessionError content
surfaced by T1, and route it on the FrameSink never-drop lane:

- reason=error emits SessionError(ERROR) content THEN preserves the ERRORED
  lifecycle transition (board/presence/delivery key off ERRORED); reason=aborted
  emits SessionError(ABORTED) only, no transition, replacing the prior counted
  UnmappedEvent staging (DL-322).
- A new isSessionError classifier lifts the SessionError trace frame onto the
  never-drop PRIORITY lane, matching the SessionInjection carve-out, so surfaced
  failure content is as durable-on-the-spine as the lifecycle transition it
  reports (DL-323).

Red-green: the mapper describe block is rewritten to the new two-frame/one-frame
contract with status presence, and a frame-sink priority-lane test covers both
kinds; both red-checked. Also renumbers this record's two colliding ledger rows
(DL-319 to DL-322, DL-320 to DL-323 -- a concurrent-merge window duplicated an
earlier-dated UI record's ids) and annotates the frozen record header with the
mapping.

Stacked on RIG-3209 T1.

Ledger-impact: renumber DL-319 to DL-322 (emit rule) and DL-320 to DL-323 (FrameSink never-drop routing); no new rows.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@linear-code

linear-code Bot commented Sep 3, 2026

Copy link
Copy Markdown

RIG-2616

RIG-3210

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-agent-rig-3210-sessi.compass-eng-docs.pages.dev

Deployed from compass-agent/rig-3210-session-error-mapper at 4db043a.

Changed pages:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant