feat(ui): mark each agent's runtime tier and egress posture - #1154
Merged
trunk-io[bot] merged 2 commits intoSep 13, 2026
Conversation
This was referenced Sep 12, 2026
Merged
rigel-mintaka
added this pull request to stack #1126
September 12, 2026 15:16
|
Compass engineering docs preview: https://compass-service-owner-rig-35-a0o8.compass-eng-docs.pages.dev Deployed from |
mattwilkinsonn
approved these changes
Sep 12, 2026
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
force-pushed
the
compass-service-owner/rig-3512-posture-surfaces
branch
from
September 12, 2026 19:37
9eeb8b7 to
9ba4c56
Compare
mattwilkinsonn
approved these changes
Sep 12, 2026
trunk-io
Bot
deleted the
compass-service-owner/rig-3512-posture-surfaces
branch
September 13, 2026 00:29
|
This pull request was merged into |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is part of a stack containing 10 PRs:
mainThe 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.