본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

가져가기 말고 참가

~11 min · 참가, 대기열, 자리, 정체성

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

가져가기 말고 참가

위임 대기열은 세션 하나가 점유할 일감 하나를 내놔. Open Run의 대기열은 함께 겨루는 자리를 내놔. 둘 다 ‘가져간다’고 부르면 차이가 숨어. Anvil의 참가자는 역할과 단계와 구성된 기대와 이미 있는 자리가 의미를 갖는 회차에 참가해.

join anvil queue #N은 공개 안내판에서 시작하고, 안내판은 회차 요약과 규약을 가리키는 표지만 돌려줘. 세션은 실제 하네스와 모델과 노력 수준을 스스로 밝혀. 예상했던 짝과 다르면 그 대화 안에서 아빠에게 확인을 받고, 예상값은 실제로 참가한 진실 옆에 계속 남아.

참가는 상태에 민감하지, 모든 경우에 같은 결과를 주지 않아. 안내판은 열린 입장 자리를 줄 수도 있고, 이미 가면을 가진 세션에 다음 단계를 안내할 수도 있고, 역할이 찼거나 회차가 지나갔다는 정확한 충돌을 낼 수도 있어. 같은 문구를 다시 쓸 때는 지금의 진실을 다시 풀어야지, 옛 자리가 아직 유효한 목적지라고 가정하면 안 돼.

그래서 다음 회전의 작업에는 가면을 아는 재참가와 따로 정해진 명시적 문구가 있어. 규약은 변하는 판을 조율하지, 같은 말이 언제나 같은 자리를 준다고 약속하지 않아.

참가는 살아 있는 판을 풀고 가져가기는 일감을 점유해. 어제의 단계를 얼리지 않으면서 예상한 뜻과 실제 정체를 둘 다 보존해.

Code

상태를 아는 참가 — 같은 문구, 다른 답·python
def resolve_join(run, session):
    """같은 문구를 다시 써도 지금 상태를 다시 푼다."""
    if run["state"] == "closed":
        return {"code": "run_passed"}
    if session["mask"] and run["phase"] > 0:
        return {"ok": True, "action": "rejoin", "mask": session["mask"],
                "phase": run["phase"]}
    if run["open_seats"] <= 0:
        return {"code": "role_full"}
    if session["actual"] != session["expected"]:
        return {"ok": True, "needs": "override_confirm",
                "expected": session["expected"], "joined_as": session["actual"]}
    return {"ok": True, "action": "enter", "seat": "open"}


run = {"state": "live", "phase": 0, "open_seats": 1}
fresh = {"mask": None, "expected": "h1/m1", "actual": "h1/m1"}
print(resolve_join(run, fresh))

mismatch = {"mask": None, "expected": "h1/m1", "actual": "h1/m2"}
out = resolve_join(run, mismatch)
# 예상값과 실제값이 둘 다 살아남는다 — 하나가 다른 하나를 지우지 않는다.
assert out["expected"] and out["joined_as"]
print(out)

later = {"mask": "mask-A", "expected": "h1/m1", "actual": "h1/m1"}
print(resolve_join({**run, "phase": 2}, later))

External links

Exercise

새 입장 참가, 예상 모델 불일치, 역할 만원, 가려진 참가자의 다음 단계 재참가에 각각 어떤 답이 나와야 하는지 써 봐.
Hint
모든 답은 지금의 회차 상태에 달렸고, 지나간 입장을 지어내면 안 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.