A brought model serving on a curated sibling's port was PRESENTED as the
sibling: match_target_to_registry falls back exact-container -> port ->
substring, and the UI treated every match as the running model's identity.
Observed live during the Agents-A1 bring (2026-07-03): c3 showed
vllm/qwen-35b-a3b-dual serving while the rig ran agents-a1.
Detect layer (tools/tui-core, shared by c3 / c3t / estate tooling):
- ServingTarget.match_confidence records the match GRADE:
"identity" (exact container) | "shape" (port/substring fallback) | "".
c3 renders the grade on every masquerade surface:
- estate rail: leads with the probed served id + a 👤 badge
("model agents-a1 👤" / dim "shape vllm/qwen-35b-a3b-dual")
- Orchestration serving card: "agents-a1 · 👤 on <slug> shape"
- Run catalog: the row badge downgrades "● serving" -> "👤 <slug> port in
use" — a guess never claims "serving"
- Containers table + config drill: 👤-badged slug for shape matches
(ContainerInfo.match_confidence threaded through)
Tests: 4 new tui-core matcher-grade tests; 4 new headless tests (serving
card shape/identity, rail, catalog badge); the N3 catalog fixture gains
the registry container so its intent (identity badge) is preserved.
tui-core 70/70, test-console 83/83, serve-cockpit 748/748. Live controls
on the rig: serving vllm/minimal grades identity (no visual change);
replaying the A1 port-8051 squat against the real registry grades shape.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfF565T9eSLaqGzidyJ1Pm