Skip to content

feat(ui): mark each agent's runtime tier and egress posture - #1154

Merged
trunk-io[bot] merged 2 commits into
compass-service-owner/rig-3512-cli-posture-columnfrom
compass-service-owner/rig-3512-posture-surfaces
Sep 13, 2026
Merged

feat(ui): mark each agent's runtime tier and egress posture#1154
trunk-io[bot] merged 2 commits into
compass-service-owner/rig-3512-cli-posture-columnfrom
compass-service-owner/rig-3512-posture-surfaces

Conversation

@rigel-mintaka

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

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 10 PRs:

  1. main
  2. feat(runtime): add the host-process WorkloadRuntime backend (RIG-3512) #1120
  3. feat(runner): derive the agent uid from the Runner's euid on the host backend (RIG-3512) #1125
  4. feat(runner): deliver the agent socket and config by path on the host backend (RIG-3512) #1135
  5. feat(runtime): distinguish a configured egress policy from an unset one #1142
  6. feat(runtime): refuse an egress policy the host tier cannot enforce #1143
  7. feat(runner): carry no egress policy on a backend that cannot enforce one #1145
  8. feat(runner): report the runtime tier and egress posture per session #1148
  9. feat(cli): show the runtime tier and egress posture per session #1153
  10. "feat(ui): mark each agent's runtime tier and egress posture" (this PR)
  11. feat(runner): declare the runtime tier and egress posture at enrollment #1156

The board showed lifecycle state only, so a host-tier agent — which shares the
host's network namespace and cannot be firewalled — looked exactly like a
contained one. Each agent now carries a marker naming its tier, and an
unenforced posture reads as uncontained on both colour and shape.

The session-status payload was subscribed but dropped, so this also lands the
decode: statuses key a runtime map by account id, which the roster join folds in
beside presence. A status with no resolvable account is skipped rather than
keyed under an empty id, and the map clears on resync — a stale posture
surviving a reset could show a torn-down session as still contained.

An absent marker stays absent rather than defaulting, because guessing a posture
is the one error this must not make.

@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown

RIG-3512

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-service-owner-rig-35-a0o8.compass-eng-docs.pages.dev

Deployed from compass-service-owner/rig-3512-posture-surfaces at 9ba4c56.

rigel-mintaka and others added 2 commits September 12, 2026 15:22
The board showed lifecycle state only, so a host-tier agent — which shares the
host's network namespace and cannot be firewalled — looked exactly like a
contained one. Each agent now carries a marker naming its tier, and an
unenforced posture reads as uncontained on both colour and shape.

The session-status payload was subscribed but dropped, so this also lands the
decode: statuses key a runtime map by account id, which the roster join folds in
beside presence. A status with no resolvable account is skipped rather than
keyed under an empty id, and the map clears on resync — a stale posture
surviving a reset could show a torn-down session as still contained.

An absent marker stays absent rather than defaulting, because guessing a posture
is the one error this must not make.
Review findings on the posture surfaces:

- `adaptRuntimeMarker` indexed the tier/posture maps bare. protobuf-es keeps
  an unknown numeric enum value on decode and the base tsconfig has `strict`
  without `noUncheckedIndexedAccess`, so a server newer than the UI yielded
  `undefined` — typed as present, and read as contained by `uncontained()`,
  silently dropping the warning it exists to show. Now falls back to
  `unknown`, matching the CLI's `!ok` arm.
- `joinAgents`' `runtime` parameter is required rather than defaulted, so
  rendering no markers is always a decision at the callsite.
- The tier mis-wiring guard covers the apple-container arm it omitted, and
  the completeness comment no longer claims a guarantee a hardcoded slice
  cannot give.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the compass-service-owner/rig-3512-posture-surfaces branch from 9eeb8b7 to 9ba4c56 Compare September 12, 2026 19:37
@trunk-io
trunk-io Bot merged commit 2317604 into main Sep 13, 2026
16 of 26 checks passed
@trunk-io
trunk-io Bot deleted the compass-service-owner/rig-3512-posture-surfaces branch September 13, 2026 00:29
@trunk-io

trunk-io Bot commented Sep 13, 2026

Copy link
Copy Markdown

This pull request was merged into main as part of stacked PR 1156.

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.

2 participants