Skip to content
C.W.K.
Stream
Lesson 04 of 05 · published

Cockpit Truth

~11 min · cockpit, truth, observability, ux

Level 0Cold Iron
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Cockpit Truth

There are two cockpit truths. On the sealed rail, every live surface—including Dad's—receives only masks. The mask-to-brain mapping exists in the database but the serving chokepoint withholds it until the run is finalized or aborted. Pippa's Sidekick sees the same masked context and cannot become an identity leak.

In an Open Run, Dad's board is identity-truthful live because he composes pairs, opens harness sessions, and confirms mismatches. It shows expected composition beside actual joined-as identity, seat and yard health, phase, evidence, and the next authority. Judges still receive norm-masked packets and never browse this board.

Truthful does not mean dumping internals. Product status should state useful facts such as “bench complete · two evidence gaps · Dad may add a judge or decide,” without leaking private endpoints, retry arguments, or recovery narration.

Waiting is a valid state. A healthy board may wait for a seat, Dad's phase advance, another judge, /decide, or the final verdict. The UI must show the owner of the next action rather than invent movement.

Sealed rail masks Dad; Open Run tells Dad the field. Judges remain artifact-focused on both rails.

Code

Splitting visibility — truthful is not a memory dump·python
INTERNAL = {"private_endpoint", "retry_args", "recovery_narration"}


def cockpit(rail, viewer, run):
    if viewer == "judge":
        return {"packet": "norm-masked"}          # identical on both rails
    if rail == "sealed":
        return {"identities": "masks-only",       # Dad is not an exception
                "status": run["status"]}
    return {"expected": run["expected"],          # open rail only
            "joined_as": run["joined_as"],
            "status": run["status"]}


run = {"status": "bench complete · 2 evidence gaps · next hand: Dad",
       "expected": "h1/m1", "joined_as": "h1/m2",
       "retry_args": {"n": 3}}

sealed_view = cockpit("sealed", "Dad", run)
open_view = cockpit("open", "Dad", run)

assert "joined_as" not in sealed_view        # sealed hides it even from Dad
assert "joined_as" in open_view              # open shows it
for view in (sealed_view, open_view, cockpit("open", "judge", run)):
    assert not (set(view) & INTERNAL)        # no surface dumps internals
print(open_view["status"])

External links

Exercise

Design one live status card for a sealed run and one for an Open Run. List exactly which identity fields Dad, Pippa, spectators, and judges may see.
Hint
The rails disagree about Dad's live visibility but agree that judges do not receive identity.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.