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

Claim 이 Session 을 묶어

~12 min · 클레임, 세션, 경합, 소유권

Level 0차가운 용기
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Claim 이 Session 을 묶어

queued delegation 은 가능한 작업이지 공유 집필 공간이 아니야. take 는 work order 를 live session identity 하나에 묶는 claim 을 만들어. 그때부터 stage log, review request, landing attempt 는 같은 identity 를 들고 와야 하고 아니면 거절돼.

binding 은 혼란 둘을 막아. author 둘이 같은 task 를 자기가 소유했다고 동시에 믿을 수 없고, 나중 session 이 앞 session 권한을 슬쩍 이어 쓸 수도 없어. handoff 는 가능하지만 복사한 environment value 를 재사용하는 대신 명시적 record 가 필요해.

session identity 는 사람 정체성이 아니라 operational provenance 야. action 을 연결할 만큼 구체적인 execution context 를 이름 대. attribution 용 brain family 를 따로 기록할 수 있지만 exclusivity 를 강제하는 건 claim token 이야.

claim 에는 liveness policy 가 필요해. crash 한 session 이 영원히 work 를 잡을 수 있거든. recovery 는 명시적 abandon, expiry, administrative release 중 정책에 맞는 걸 쓰고 이유를 기록해야 해. 조용히 claim 을 훔치면 trail 은 편해지고 못 믿게 돼.

주인 하나, 보이는 복구

single writer transaction 아래 queued item 하나에 take 둘을 시도해. 하나만 claim 을 받고 다른 하나는 현재 owner 와 status 를 받아야 해. 그다음 row 를 engine 밑에서 고치지 말고 지원되는 transition 으로 recovery 를 흉내 내.

뒤 mutation 마다 session identity 를 넣어. engine 이 write 전에 claim 과 비교해서 task key 만 안다고 권한이 생기지 않게 해야 해.

exclusive ownership 에는 눈에 보이는 recovery 가 필요해. claim token 이 모든 mutation 을 한 session 책임으로 묶고, abandon 이나 release record 가 failure 뒤 control 이동을 설명해. crashed owner 가 불편하다고 silent claim theft 를 허용하면 exclusivity 도 provenance 도 같이 사라져.

Code

Bind mutations to the claimed session·python
delegation = {"status": "queued", "claimed_by": None}

def take(session: str) -> None:
    if delegation["status"] != "queued":
        raise RuntimeError(f"already claimed by {delegation['claimed_by']}")
    delegation.update(status="taken", claimed_by=session)

def stage(session: str) -> None:
    if session != delegation["claimed_by"]:
        raise PermissionError("session does not own claim")

take("session-a")
stage("session-a")
try:
    stage("session-b")
except PermissionError as exc:
    print(exc)

External links

Exercise

작업장의 claim, handoff, crash-recovery transition 을 설계해. 누가 각각 trigger 할 수 있고 어떤 receipt 가 남는지 써.
Hint
이유 없는 generic force-unlock 은 피해야 해.

Progress

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

댓글 0

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

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