
    djZ                    X   U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dZd	ed
<   dZd	ed<   dZd	ed<   dZd	ed<   dZd	ed<   dZd	ed<   dZd	ed<   dZd	ed<   dZ d	ed<   dZ!d	ed<   dZ"d	ed<   dZ#d	ed <   d!Z$d	ed"<   d#d$d%d&d'd(d)d*d+d,d-
Z%d	ed.<    ed/      Z&d0Z'd1Z(d	ed2<   d3Z)d	ed4<   d3Z*d	ed5<   d3Z+d	ed6<   d7Z,d	ed8<   d9Z-d	ed:<    ed;      Z.d	ed<<   d=Z/d	ed><    ed?      Z0d	ed@<   dAZ1d	edB<   dCZ2d	edD<   dEZ3d	edF<   dGZ4d	edH<   dIZ5d	edJ<   dKZ6d	edL<   dMZ7d	edN<   dOZ8d	edP<   dQZ9d	edR<   dSZ:d	edT<   dUZ;d	edV<    edW      Z<d	edX<   e<dYz  Z=d	edZ<   d[Z>d	ed\<   d]Z?d	ed^<    ej                  d_      ZAd`ZBdaZCdbZDh dcZE G dd deeF      ZG G df dgeG      ZH edhi       G dj dk             ZIddlZJdddmZKddnZLddoZMddpZN	 	 	 	 	 	 	 	 ddqZOddrZPddsZQddtZRdduZS	 d	 	 	 	 	 ddvZT	 	 	 	 ddwZUddxZVddyZW	 	 	 	 	 	 	 	 ddzZX	 	 	 	 	 	 	 	 	 	 dd{ZY	 	 	 	 dd|ZZdd}Z[dd~Z\	 	 	 	 	 	 	 	 	 	 ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcddZdddZeddZfddZg G d d      ZhddZiddZjdddZkddZlddZmendk(  r eo em             y)zNContinuous, event-first Task26 lifecycle observer and role-handoff controller.    )annotationsN)	dataclass)date)Path)Final@4a6c7ee54cf9526a30de8bb576c1d71b411938beba33a04914738f6e1b6ed1cbr   	SUCCESSOR@3374be765c7e53fc431b0c6e48cacbacb09618f77f13ef87016cb0ad2575d060CORE@9d22e89a0b1a14d4eb7f1c2005fc01860bec5f3b4eda6e01bb1390542a90b875WHEEL@d816dbbd6a27d5826b251d279a9831de096ef7cd79b5fd131ceff7253b7369bePLAN@8416cd7c83cab5540af2e1e01dbcc5b1bdfd49a59d8ef21ea49512c28d749218GOLDEN@a2e15845764e7041957ae4518096fe73f87ec35b57021980cdd4df3ea18ac00dRECOVERY@5e3067fe3c865224fc73ff5a9a65058c87960f05d9af53bddccaf6f32dc83939CONSENTcb_PCczfFXoI4GjvCxLBs1oRASESSION@53b4f95b5b4db9a611128976a7b951bbe22d9619e05b2ff07fadf5b02f9a5380SID%task26_live_2e_r2_20260815_8527916639KEY
8527916639CUSTOMER
8693203710OWNER)date_of_birthequation_sex_basis	height_cm	weight_kgactivity_categoryactivity_rationale	goal_typetarget_weight_kgtarget_date	allergiesintolerancesreligious_ethical_exclusionsdisliked_foodsdietary_preferences
conditionsmedicationspregnancy_breastfeedingeating_disorder_riskcooking_accessbudget_band
meal_countschedule_constraintsFIELDS@95637abce4742d583534cf406b038f7c862ad0a72d10a6bab24d2452dcb0f776@8c7065277d5d96ce1012ac0c098d53288bba66c44c0674704be4072fe0a63951@8ce2fe8770c2b480083e9d44237d80892ccddcaec06acca14db18576a2ee0088@5d3103b744b6e92ddbc576a77df433c2127d6df17260a3c78d2000d7b90d2f97@8fb6ba6f855e7508c525447cdec482ceb240f8c0a5827b2ca0ce4268c6880bb0@8afb45c5cca082fd85cf07ab43dc5d1062c34678fd268a5722e313ce35cffd8b@3c24d49d656c623edfb95fcfbc7fb0f92365fc123420df66f733f9dbe39d704f@f04ea498ad12a257fb1322da4c8cfd2f91fc9403f0b978617fcc00df41729209@b0747c4f366d5a78fce7c4ae14b46bd7731b2ecc1591735c6ad75933a3a72abf@996d4b629eb21f59b9021a6b96ab2d82c0c89029f21e8de7cbb6143c59359f88)
z1gateway/platforms/dualcoach_activation_cutover.pyz$gateway/platforms/dualcoach_admin.pyz0gateway/platforms/telegram_customer_bootstrap.pyzgateway/platforms/telegram.pyz8gateway/platforms/nutrition_onboarding_reconciliation.pyz7gateway/platforms/telegram_nutrition_onboarding_copy.pyz:gateway/platforms/telegram_nutrition_onboarding_runtime.pyzFgateway/platforms/telegram_nutrition_onboarding_runtime_publication.pyz'gateway/platforms/nutrition_coaching.pyz,gateway/platforms/nutrition_service_state.pyRUNTIMEzK/home/cube/projects/richard/hermes-agent/.venv/lib/python3.12/site-packagesz task26-continuous-lifecycle-v6.4g      @DEFAULT_STAGE_TIMEOUTg     @DEFAULT_TOTAL_TIMEOUTMAX_STAGE_TIMEOUTMAX_TOTAL_TIMEOUT@00d44de03e8dde668da8058091751291b13457c8bd086917dfe85e42b3813df8RECOVERY_SEALi}ʅ%POLLING_OFFSET_LOWER_BOUNDz/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-activation-checklist-6aaef77d-task26-live-2e-r2/activation-checklist-receipt.json	CHECKLIST@b093aeb888ce7325cddd7d56d52a7e4a7ec8a180ac80eef21fea9453a8ef0e8eCHECKLIST_SHA256z/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-activation-checklist-6aaef77d-task26-live-2e-r2/checklist-validation-receipt.jsonVALIDATION_RECEIPT@acb21c8c02260497c197427cfc93417f2be65c8746768ba788bb33400e3e6e78VALIDATION_RECEIPT_SHA256@f75856d6d986b64d3d2f083aec2f865c7aea19f5950b84ff06e519f2f6505af6PROFILE_WHEEL@10cf17fba0e0f60c43d0a379721b71a945ef2c4c168fff8f613c01448297edb4READINESS_RECEIPT_SHA256@857f37c973156c3dcc574dc1dd566f3e4724ddf29c2d44f552184d56e94a1a99READINESS_DIGEST@c6ecd6cb55fd68989b04d60f5ef13491a821e261e43dc7c231d0d5fefa92262eOWNER_REVIEW_RECEIPT@8856ca5146cd74a6e9ed05dcd06747a694cd4f8415ee0575d673d04c9e310f09AUTHORITY_DIGEST@fe65b634396aaae2818719d1b34fdaad148b2547290d3a66b3af7803bf93dfcaDEPLOYMENT_RECEIPT@0119beeb46a15ab25a78550da4c432b4cc52e0dc816822d2688dc9009df89d90CANDIDATE_INVENTORY@2833428cfab41826a5cb54f90bb51c56f40b2468850d02687f7341c791b7f803PREDECESSOR_SEAL@81c1e581cb84aac6f44044747e0e8e77a2d7498c71d626f1f9b5ec2f9d09a261SERVICE_STATE_SHA256i SERVICE_PIDz?/home/cube/.hermes/profiles/dualcoachtest/workspace/checkin_cliDOMAIN_PACKAGE_ROOTcheckin_cliDOMAIN_MODULE_ROOTu   활동 수준: 보통. 주 3회, 회당 60분 정도의 중간 강도 근력운동을 희망합니다
 . 평소 걷기·이동은 하루 약 6,000~8,000보 수준입니다.LEGACY_ACTIVITYu   주 3회, 회당 60분 정도의 중간 강도 근력운동을 희망합니다
 . 평소 걷기·이동은 하루 약 6,000~8,000보 수준입니다.DETAILED_RATIONALEiIIIi  i @  i   >   recovery-auditsprofile-reset-archivesdualcoach-provider-authrehearsal-reset-archivespost-lifecycle-cleanup-archivesglobalc                      e Zd Zy)LifecycleErrorN__name__
__module____qualname__     _.omo/evidence/task26/task26-continuous-lifecycle-observer-v6.4-4a6c7ee5/continuous_lifecycle.pyro   ro   x       ru   ro   c                      e Zd Zy)LifecycleTimeoutNrp   rt   ru   rv   ry   ry   |   rw   ru   ry   T)frozenc                  n    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
Zded<   d
Zded<   ddZy)Promptstrstatusroleactorztuple[str, str]route
str | None
message_idaction commanddetailc           	         | j                   | j                  | j                  t        | j                        | j
                  | j                  | j                  | j                  dS )N)r~   r   r   r   r   r   r   r   )	r~   r   r   listr   r   r   r   r   selfs    rv   docz
Prompt.doc   sI    kkIIZZ$**%//kk||kk	
 		
ru   N)returndict[str, object])rq   rr   rs   __annotations__r   r   r   rt   ru   rv   r|   r|      s;    K
IJKGSFC

ru   r|   c                d    t        j                  | j                               j                         S N)hashlibsha256
read_bytes	hexdigest)ps    rv   shar      s     >>!,,.)3355ru   c                   | j                         s|S | j                         rt        d|        | j                         }t        j                  |j
                        rC|j                  t        j                         k7  s"t        j                  |j
                        dz  rt        d|        	 t        j                  | j                               S # t        j                  $ r}t        d|        |d }~ww xY w)Nzsymlink authority: ?   zunsafe authority: zinvalid JSON: )exists
is_symlinkro   statS_ISREGst_modest_uidosgetuidS_IMODEjsonloadsr   JSONDecodeError)r   defaultses       rv   loadr      s    88:||~21#677	ALL#88ryy{"<<		"U*1!566:zz!,,.)) :~aS129:s   2"C C<(C77C<c                4   t        | t              r!| D cg c]  }t        |t              s| c}S t        | t              rLdD ]G  }t        | j                  |      t              s#| |   D cg c]  }t        |t              s| c}c S  g S c c}w c c}w )N)recordsgenerationsitems)
isinstancer   dictget)vxks      rv   rowsr      s    !T41a
1d 3144!T4A!%%(D)#$Q4?4a:a+>4?? 5 I 5 @s   BB.BBc                    t        j                  t        j                  t                    j                         j                  d      }d|  d| d| S )N=znon2::)base64urlsafe_b64encodebytesfromhexr   decoderstrip)r   
generationhs      rv   callbackr      sH      s!34;;=DDSIA6(!J<q,,ru   c                 T    dt         z   dz   t        t              z   dz   t        z   dz   S )Na  /home/cube/projects/richard/hermes-agent/.venv/bin/dualcoach_admin customer activate --profile-root /home/cube/.hermes/profiles/dualcoachtest --data-root /home/cube/.hermes/profiles/dualcoachtest/data/customers/task26_live_2e_r2_20260815_8527916639 --customer-id z --checklist-evidence 'z' --bootstrap-session zg --expected-generation 5 --package-root /home/cube/.hermes/profiles/dualcoachtest/workspace/checkin_cli)r   r}   rI   r   rt   ru   rv   exact_cutoverr      sK     	R
	
#	$ i.	 #		#
 	 t	tru   c           	         | D cg c]#  }t        |j                  |d            |k(  s"|% }}t        |      dk(  r|d   S d S c c}w )Nr      r   )r}   r   len)seqfieldvaluerr   s        rv   _oner      sM     :Cq3quuUB/0E9CA:q6Q;1Q4(D( 	;s
   #AAc                $   t        | dz  i       }t        t        t        |t              r|j                  dg       ng       dt              }t        | dz  i       }t        t        t        |t              r|j                  dg       ng       dt              }| dz  t        z  dz  }t        |d	z  d       xs t        |d
z  d       }t        |dz  d       }t        |dz  i       }t        t        t        |t              r|j                  di       ni       dt              }	|	[t        |t              rKt        |j                  d      t              r,|d   j                  t              }
t        |
t              r|
nd }	t        | dz  i       }t        | dz  i       }| dz  t        z  dz  }t        |dz  d       }d }t        |t              r|j                  d      }t        |j                  dg             }|rt        |dt        |            nd }|rt        |dz  | dz  d       nd }t        |t              r||j                  d      |j                  d      |j                  d      t        |j                  d            t        |j                  d            gt        |t              r|j                  d      nd d}t        | dz  g       }t        | dz  i       }t        | dz  i       }t        | dz  i       }g }| d z  }|j                         rO|j                         j                         D 
cg c](  }
|
j                         st        j                  |
      * }}
t        |t              r|j                  d!      nd }||||||	t        |      t        |      |t        |      t        |t              rt        |j!                               n
t        |      t        |t              r|ni t        |t              r||d"S i |d"S c c}
w )#Nz:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonsessions
session_idzcustomers/registry.json	customerscustomer_keyzdata/customersznutrition-onboardingz
ready.jsonztransient/workflow.jsonzbaseline-candidate.jsonzsession.jsonz:data/onboarding/telegram-publication-outbox-v1/ledger.jsonzCdata/onboarding/telegram-publication-outbox-v1/owner-callbacks.jsonwizardztelegram-bindings.jsonactive_session_idbindingsdraftsz.jsonversionstepr   chat_idtopic_idfinalized_event_id)r   r   r   r   r   r   z)data/owner-actions/draft-generations.jsonz.data/owner-actions/draft-generation-cards.jsonzdata/owner-actions/drafts.jsonz(data/owner-actions/draft-deliveries.jsonz$data/customer-activation-audit.jsonlowner)	bootstrapcustomerr   workflowbaselinepublicationoutboxowner_callbacksr   r   cardsr   
deliveries
activation)r   r   r   r   r   r   r   r   r}   r   	read_text
splitlinesstripr   r   r   values)rootbootbrregcrnrwfr   pubsprr   outocwrbindr   activebsbdraftgensr   r   r   auditapr   s                              rv   capturer      s   SSUWXD	D$)?TXXj"%RH
B
 t//
4C	C)>SWW["%BG
B
 
 	 3	&)?	?B	b<	&	T$r4M/Mt*TBB22D9H^#R(D	D$)?TXXj"%RH
B 
zjt,DHHZ<PRV1W  )Q%Q4
tRRTV
WC	TTVX
B 
 	 3	&	1B--t4DF$-.$((:r*+39D\3v;/t@FR(]xu%55t<Da$55+feeL1aeeI./QUU:5F1GHeT* ',ii0D&E	F BBBGDHH"ME$992>FdGGLJE	6	6B	yy{(*(A(A(CQ(C1qwwyA(CQ *3 5CGGG4Es)8Dz)3E4)@elln%d5k&vt4&"$.z4$@j  GI  Rs   6PPc                z   | j                  d      }| j                  d      }| j                  d      }t        |t              rV|j                  d      t        k7  s>|j                  d      t        k7  s&|j                  d      dvs|j                  d      d	vrt        d
      |t        t        ddk7  rt        d      t        |t              r]|j                  dt              t        k7  s@|j                  d      t        t        ddd fvr*|j                  d      t        t        dgk7  rt        d      t               }| j                  dg       }t        |t              st        d      |D ]  }t        |t              st        d      |j                  d      |j                  d      f}||v rt        d      |j                  |       |j                  d      }|j                  d      }	|dk(  r|	t        dgk7  s|dk(  s|	t        dgk7  st        d       | j                  di       }
t        |
t              rs|
j                         D cg c]@  }t        |t              r.|j                  d      t        k(  r|j                  d      dk(  r|B }}t        |      dkD  rt        d      y y c c}w )Nr   r   r   r   sid_hashstate>   ACTIVEAWAITING_ACTIVATIONr   >         zbootstrap authority drift0user_idr   r   owner member authority driftr   telegramr   zcustomer route driftr   zoutbox schema driftz duplicate publication generationr   zpublication role route driftr   r~   sent_auditedr   zduplicate sent_audited delivery)r   r   r   r   r   ro   r   r   r   setr   addr   r   )r   r   cr   seenr   r   r   r   r   dterminals               rv   validate_snapshotr    sp   	kA	jAEE'NEq$55')55#55>!BB55f,899EeEE;<<q$55%,EE* (X3OQUVWg8Xs";; 3445DUU8R Ffd#233!T" !677UU< !%%"569 !CDDuuV}gJ(C(w%% !?@@   	
lBA!T XXZ
!T"n%,h>1	  	 
 x=1 !BCC  
s   AJ8c                   t        |       | j                  d      }|j                  d      }t        |t              rzt        |t              rj|j                  d      dk(  rV|j                  d      dk(  rBt	        |j                  dd            t	        |j                  dd            k  rt        d      | j                  d      }|j                  d      }t        |t              rRt        |t              rBt	        |j                  dd            t	        |j                  dd            k  rt        d	      | j                  d
      }|j                  d
      }t        |t              rxt        |t              rg|j                  d      |j                  d      k(  rCt	        |j                  dd            t	        |j                  dd            k  rt        d      y y y y )Nr   r   
collectingcursorr   zonboarding cursor regressedr   r   z publication generation regressedr   r   r   zcheckin version regressed)r  r   r   r   intro   )ar   awbwr   bpavbvs           rv   validate_transitionr  U  s   a	
z	B	
z	B2tr4 FF7O|+FF7O|+x#$s266(A+>'??:;;	
}	B	
}	B2tr4 |Q'(3rvvlA/F+GG?@@	
xB	
xB2tr4 FF< BFF<$88y!$%BFF9a,@(AA899 B 9 ! 	ru   c                    t        j                  | dddd      j                         }t        j                  |      j                         S )NFT,r   )ensure_ascii	sort_keys
separators	allow_nan)r   dumpsencoder   r   r   )r   encodeds     rv   canonical_digestr&  t  sE    jj fh  >>'",,..ru   c                   | j                  d      }t        |t              r|j                  d      dk7  ry |j                  d      }|j                  d      |j                  d      }t        |t              r,t              t        usdk  st        |      t        us|dk  ry | j                  d      }t        |t
              sy |D cg c]  }t        |t              r|j                  d	      t        k(  r|j                  d      dk(  ry|j                  d      k(  re|j                  d      |k(  rQ|j                  d      |k(  r=|j                  d
      |k(  r)|j                  d      |dk(  rt        dgnt        dgk(  r| }}|D cg c]  }t        |t              rn|j                  d	      t        k(  rV|j                  d      dk(  rBt        |j                  d            t        u r"t        |j                  d            t        u r| }}t        d |D        d      }	t        fd|D        d      }
t        |      dk(  r|	k(  r||
kD  r|S d S c c}w c c}w )Nr   r   	COMMITTEDpayloadr   r   r   r   r   r   r   r   r  c              3  8   K   | ]  }t        |d            yw)r   Nr  ).0records     rv   	<genexpr>z(committed_publication.<locals>.<genexpr>  s     C1BvVL!	"1Bs   )r   c              3  \   K   | ]#  }t        |d          k  rt        |d          % yw)r   r   Nr+  )r,  r-  r   s     rv   r.  z(committed_publication.<locals>.<genexpr>  s5      	
+6,'(:5 |$%+s   ),r   )r   r   r   typer  r   r   r   r   maxr   )r   r   r   r)  r   r   r-  matchescommitted_recordslatestprior_messager   s              @rv   committed_publicationr7    sL    %%&Kk4(KOOG,D,Sooi(G.J.Jw%
3&>
3&?UU8_Ffd# Ffd#JJ|$/JJw;.JJ|$
2JJ|$
2JJy!W,JJv$&JJw#z1XsOs|E 	   Ffd#JJ|$/JJw;.L)*c1L)*c1 	   C1BCF 	
+	

 M w<1v!5*}:T 	 Es   B<IBI"c                8   | j                  d      }| j                  d      }t        |t              rt        |t              sy t        |      }|j                  d      }|j                  d      }|j                  d      }|j	                         D ci c]  \  }}|dk7  s|| }	}}|j                  d      dvs|j                  d      |k7  syt        |t
              rit        |      t        usXd	|cxk  rt        |      k  rDn y t        |t              r1t        |	      |k7  s#|j                  d      d
k(  |t        |      k  k7  ry g }
t               }|D ]  }t        |t              rqt        |      h dk7  sa|j                  d      t        vsJ|j                  d      |v s7|j                  d      dvs$t        |j                  d      t              r|d   s y |j                  t        |d                |
j                  |        |||
|fS c c}}w )Nanswersreconciliationclarificationscurrent_indexdigestr   >   resolved
clarifyinganswers_digestr   r?  >   kindr   question_kor   rA  >   	ambiguitycontradictionrB  )r   r   r   r&  r   r   r1  r  r   r}   r
  r6   r  append)r   r9  r-  r@  r;  r<  r=  keyr   unsignedtypedr  items                rv   reconciliation_authorityrJ    s    ll9%G\\*+Fgt$Jvt,D%g.NZZ 01NJJ/MZZ!F-3\\^O^zsEshU
^HO

7#==::&'>9.$/c)M8S%88  &#&H%/JJw</C//1 %'EUD4&4y<<xx .xx D(xx'EEdhh}5s;&T']#$T  NE=889 Ps   H#Hc                   | j                  d      }t        |t              rddddj                  |      nd }| j                  d      }t        |t              rddd	d
ddj                  |      nd }|y|ydD ]?  }| j                  |      }t        |t              r|j                  d      dvs8dd| fc S  | j                  d      dury| j                  d      durydd| d| dfS )Nr&      감량   유지   증량lossmaintaingainr$      좌식	   가벼움   보통   매우 활동적   최고 활동	sedentarylightmoderatevery_activeextra_active)Fz$canonical Korean goal is unavailable)Fz(canonical Korean activity is unavailable)r)   r*   r+   r,   r-   r.   r/   r~   >   noneprovidedFzstructured answer unavailable: r0   )Fz#health review input requires reviewr1   Tzgoal=z; activity=z; health=no-review)r   r   r}   r   )r9  
goal_valuegoalactivity_valueactivityr   r   s          rv   summary_qualityrd    s-   [)J j#& xBFFzR 	
 [[!45N nc* "  -+	
 #n
  |<@ E"%&%))H*= F
 +
 ;E7CCC {{,-U:;{{)*%7;5k(3EFFFru   c                    d!d" fd}d# fdddddj                  t         j                  d                  }d	d
ddddj                  t         j                  d                  }dj                  fddD              }dj                  d|xs d d|xs d d |d       d |d       dd |d       d |d       d |d       d| d f      S )$N	   미입력c                    j                  |       }|
|dk(  s|g k(  r|S t        |t              rdj                  d |D              xs |S t	        |      S )Nr   , c              3  2   K   | ]  }t        |        y wr   )r}   r,  rI  s     rv   r.  z7authoritative_summary.<locals>.value.<locals>.<genexpr>  s     734SY3s   )r   r   r   joinr}   )r   r   rawr9  s      rv   r   z$authoritative_summary.<locals>.value  sT    kk% ;#)sbyNc4 997377B7B3xru   c                   j                  |       }t        |t              sy|j                  d      dk(  ry|j                  d      }|j                  d      dk7  st        |t              sydj	                  d |D              xs dS )	Nrf  r~   r^     없음r   r_  rh  c              3  H   K   | ]  }t        |t              s|s|  y wr   r   r}   rj  s     rv   r.  z<authoritative_summary.<locals>.structured.<locals>.<genexpr>&  s     Out
40E$dus   """)r   r   r   r   rk  )r   rl  r   r9  s      rv   
structuredz)authoritative_summary.<locals>.structured  s|    kk% #t$778& 778
**UD2IIIOuOO 	
ru   rL  rM  rN  rO  r&   rS  rT  rU  rV  rW  rX  r$   u    · c              3  >   K   | ]  \  }}| d  |         yw) Nrt   )r,  labelr   rq  s      rv   r.  z(authoritative_summary.<locals>.<genexpr>4  s2      	
LE5 ':e$%&
s   ))u   알레르기r)   )u	   불내증r*   )u   종교·윤리 제한r+   )u   비선호 식품r,   )u   식품 선호r-   
u
   - 목표: u
   - 활동: r%   u   - 식사: 하루 r4   u   끼u   - 조리·예산: r2   r3   u   - 식사 시간: r5   u*   - 알레르기·불내증·식품 제한: u=   - 건강 관련 입력: 별도 검토 입력이 없습니다.)rf  )r   r}   r   r}   r   r}   )r   r}   r   r}   )r   r}   rk  )r9  r   ra  rc  restrictionsrq  s   `    @rv   authoritative_summaryrw    s   
 (HEIIGKK$%D )' 
c#gkk-.
/0  ;; 	
	 	L 99,-.0[1e<P6Q5RSl 34C8 '7!8 9eM>R=ST&< =>?8GK	

 
ru   c                   | j                  d      }t        |t              sy |j                  d      }t        |t              sy |rt        |      n|j                  d      }t        |t              r|sy dd|g}dD ]d  \  }}|rdn|j                  |      }	|	st        |	t
        t        f      rt        d |	D              s y |j                  d|gd	 |	D               f |j                  d
       dj                  |      dz   S )Nr:  advisory
summary_kou    입력 내용을 정리했어요r   ))u   확인된 내용facts_ko)u   안전 관련 참고사항safety_observations_kort   c              3  <   K   | ]  }t        |t                y wr   rp  rj  s     rv   r.  z-candidate_attestation_text.<locals>.<genexpr>`  s      @28$
4%&s   c              3  &   K   | ]	  }d |   yw)z- Nrt   rj  s     rv   r.  z-candidate_attestation_text.<locals>.<genexpr>d  s     &FvtD6{vs   )r   u\   이 요약은 참고용이며 안전 판정·승인·활성화를 대신하지 않습니다.u=   내용이 맞으면 아래 확인 버튼을 눌러 주세요.ru  u   

아래 버튼을 누르면 입력 확인이 저장되고 운영자 검토로 넘어갑니다.
이 단계에서 영양 코칭이 시작되거나 활성화되지는 않습니다.)
r   r   r   rw  r}   r   tupleallextendrk  )
r   r9  r<  r:  ry  summarylinestitlerF  r   s
             rv   candidate_attestation_textr  K  s    \\"23Nnd+!!*-Hh%*7g&X\\,=W  gs#7/W=E
s %(,,s*;ftUm4C @28@ = LL"eG&Fv&FGH 
LL	
 			%]	]ru   c                    t        | ||      }t        |d uxrC |j                  d      t        j                  |j                               j                         k(        S )Nbody_digest)r  boolr   r   r   r$  r   )r   r9  r<  r)  texts        rv   candidate_body_boundr  s  sV     &hGDD 	TKK&'..*G*Q*Q*SS ru   c           	     ,   t        |       t        t              k7  s| j                  d      dk7  ry| j                  d      }t        |t              syt	        t
              }|t        j                  vr t        j                  j                  d|       	 t        j                  d      }t        t	        t        |dd                  j                         }|j                  t        j                               syt!        |       }|j#                  d	t$        d
dd       |j'                  |t)        j*                               }t        |dd       }t        |t              r|rt5        |      dkD  ryd|fS # t,        t.        t0        t2        f$ r Y yw xY w)Nr$   r[  )FNr%   r   z'checkin_cli.nutrition_onboarding_models__file__r   z1.0	completedpendingunpublished)schema_versionr   session_statusreview_decisionpublication_status)as_ofi  T)r
  r6   r   r   r}   rb   syspathinsert	importlibimport_moduler   getattrresolveis_relative_tord   r   updater   build_onboarding_baseliner   todayImportErrorOSError	TypeError
ValueErrorr   )r9  	rationalepackagemodelssourcer)  r   
normalizeds           rv   shipped_baseline_validationr    sX    7|s6{"gkk2E&F*&T01Ii%%&Gchh7#(()RSc'&*b9:;CCE$$%7%?%?%ABw- &%, 	 	
 33G4::<3PX';TB
 j#&jC
Oc<Q	 )Z8 s   A%E7 ;AE7 7FFc                "    t        |       \  }}|S r   )r  )r9  valid_s      rv   baseline_valid_answersr    s    *73HE1Lru   c                   | j                  d      }t        t        |t              xrZ t	        |      t	        t
        d d       k(  xr: |j                  d      dk(  xr$ |j                  d      t        k(  xr
 d|vxr d| v      S )Nr9  r/  r$   r[  r%   r5   r:  )r   r  r   r   r
  r6   rf   )r   r9  s     rv   normalized_rewindr    s    ll9%G7D! 	-LCs,,	-KK+,
:	- KK,-1CC	- #'1		-
 H, ru   c                    t        | ||      t        | |||      syd}t        fd|D              ryd}t        fd|D              syy)	N)Fz.publication body is not candidate-render-bound){r   r~   rf  u
   수정 전u    실제 총활동량은 불명확u   위험 신호rQ  r[  rY  r\  r]  c              3  &   K   | ]  }|v  
 y wr   rt   r,  tokenr  s     rv   r.  z.publication_summary_quality.<locals>.<genexpr>  s     
0iU5D=i   )Fz5publication contains forbidden internal or stale copy)u   - 목표: 유지u   - 활동: 보통u   주 3회u   60분u   6,000~8,000보u%   별도 검토 입력이 없습니다.c              3  &   K   | ]  }|v  
 y wr   rt   r  s     rv   r.  z.publication_summary_quality.<locals>.<genexpr>  s     3(u}(r  )Fz8publication lacks Korean goal/activity/no-review summary)Tz,candidate-render-bound Korean summary passed)r  r  anyr  )r   r9  r<  r)  	forbiddenrequiredr  s         @rv   publication_summary_qualityr    sf     &hGD|/'=' GI 
0i
00MH 3(33P?ru   c           
        | j                  d      }t        |       }t        |t              r|j                  d      dk7  s|y t	        |      }|j                  d      }|t        |t              sy |\  }}}}t        |      \  }	}
t        d   }|j                  d      }|j                  d      }|	sPt        |      t        us?|dk  s:|j                  d      dk7  s&|j                  d	      |k7  sd
|v st        ||||      sy t        |      t        ust        |      t        ury ddt        t        dgt        |      t        d|      ||j                  |      d|
z   d	S )Nr   r   customer_attestationr)  r/  r   r      r@  clarification_fieldREADY_CUSTOMER_REVISIONr   r  reviseuV   press the existing 수정 button, then resubmit the unchanged final canonical answer; )	r~   r   r   r   r   r   
next_field
next_valuer   )r   r7  r   r   rJ  rd  r6   r1  r  r  r   r}   r   )r   r   r   	authorityr)  r9  r@  r  r<  
quality_okreasonr   r   r   s                 rv   candidate_revision_handoffr    s`   uuZ H'*Kx&<< $::(2Iooi(G
7D 909-G^Q(1J2JE.J.J
3&?;;w#99;;'(N: G+#Hg}gNJs"d:&6c&A+C*o8Z0kk%(j
 ru   c                2    t        ddddd dd|  d|       S )NWAIT_MATCHING_ROLE_PUBLICATIONsystemlocalr  publication:autozwait for the latest committed z publication matching r   )r|   )r   r   s     rv   wait_matching_role_publicationr    s2    (/v5KE7S ru   c                   |j                  d      }| j                  d      }t        |t              rFt        |      dk7  s8t        |t              r(|j                  d      |k7  s|j                  d      i k7  rt        d      |j                  d      }|j                  d      }|j                  d      }t        |t              rnt        |      |k7  s`t        |t              rPt        |t              r@|j                  d	      |j                  d      k7  st        |      |j                  d
      k7  rt        d      t        |      \  }}|st        d      |S )Nbaseline_digestr   @   r=  r9  z%owner review baseline authority driftsource_answersr:  input_reconciliation_digestr@  z"owner review baseline digest driftz/owner review shipped baseline validation failed)r   r   r}   r   r   ro   r&  r  )	r   r   r=  r   r)  r  r:  r  r  s	            rv   validate_owner_baseliner    s(   \\+,FuuZ Hvs#v;"(D)<<!V+<<	"b(DEEll:&G\\"23N\\"23Nw%G$..$/.$/<<56.:L:LX:VVN+~/A/ABR/SSABB*>:HE1NOOMru   c                   t        |        | d   }| d   }| j                  d      }t        |t              rt        |t              sJ t	        |j                  d            }|j                  d      dk(  rt        |t              st        d      t        |j                  d            }|dk(  r|j                  d	      }t        |      t        us$d
|cxk  rt        t              k  st        d       t        d      t        |       }|t        ddddd d      S |j                  d      }|j                  d      }	|j                  d      }
t        |t              r6|j                  d      dk7  s"t        |	      t        ust        |
      t        urt        ddddd d      S |t        t              dz
  k(  r@|	dk  st        |      st        d      t        ddt        t        dft        |
      ddd      S t        ddt        t        dft        |
      dt        |    d|dz    d      S t        |       }|d k(  r|t        ddddd dd!      S |d   }t        |t              sJ t        |      }|t        d"dddd d#      S |\  }}}}|j                  d      d k7  s|j                  d$      |k7  rt        ddddd dd%      S |j                  d      }	|j                  d      }
t        |	      t        ust        |
      t        urt        d&      |	}t        |
      }|d'   }t        |t              sJ |d   d(k(  rM||   d)   }|j                  d*      |k7  rt        ddddd dd+      S t        d,dt        t        df|d-| d.      S d*|v rt        ddddd dd/      S t!        ||||      }|sF|d0k(  r/|
d1k(  r*|j                  d2      t"        k(  rt        d3d4d4dd d5d6      S t        d7dddd dd8      S t%        |      \  }}|sU|d9k(  r>|j                  d2      t"        k(  r&t        d:dt        t        df|t'        d;|      d<d=      S t        d>d4d4d|d?|      S |d@k  st)        |      st        dAdddd d#dB      S t+        ||||      \  }}|st        d>d4d4d|d?|      S t        dCdt        t        df|t'        dD|      d<dE|z         S t        | dF      }t        |t              st-        dF|      S |j                  d      }|j                  d      }	|j                  d      }
t        |t              r6|j                  d      |k7  s"t        |	      t        ust        |
      t        urt-        dF|      S |	}t        |
      }|dGk(  rzt/        | |       |j                  dH      t0        k7  rt        dI      |dJk  s|j                  dK      dLk7  rt-        dF|      S t        dMdFt0        t0        df|t'        dN|      d<dO      S |dPk(  rt        dQdFt0        t0        df|dR      S |dSv r/|dTk(  rt        dUdddd dV      S t        dWd4d4dd dXt3               dY      S t        dZ      |j                  d      d[k7  s|j                  d      d\k7  rt        d]      | j                  d^i       }g }t        |t              rY|j5                         D cg c]@  }t        |t              r.|j                  d_      t6        k(  r|j                  d`      dak(  r|B }}|r&|rt        dbd4d4dd dcdd      S t        ded4d4dd dfdg      S |st        dh      | j                  di      }t        |t              st        djdt        t        dfd dkdl      S |j                  dm      t        dgk7  rt        dn      |j                  do      dpk7  rFt        dqdt        t        dft        |j                  d            dr|j                  do       ds      S |j                  dt      s4t        dudt        t        dft        |j                  d            dvdw      S | j                  dxi       }g }t        |t              ro|j9                         D cg c]T  \  }}t        |t              r?|j                  d_      t6        k(  r'|j                  dy      |j                  dy      k(  r||fV }}}| j                  dzg       } t        | t:              st        d{      | D !cg c]O  }!t        |!t              r=|!j                  d_      t6        k(  r%|!j                  dy      |j                  dy      k(  r|!Q }"}!|s|"rt        d|      t        d}dddd d~d      S |D #cg c]  }#|#d   j                  d`      dvr|# }$}#t        |$      dk7  rt        d      |$d
   \  }%}&|"D !ch c]3  }!t        |!j                  d      t              s#|!j                  d      5 }'}!| j                  dg       }(t        |(t:              st        d      |(D #cg c]s  }#t        |#t              ra|#j                  d      |%k(  s7|#j                  d      |%|&j                  d      hv s|#j                  d      |'v r|#j                  d      dk(  r|#u })}#t        |)      dk7  rt        d      |)d
   }*|*j                  d      }+|+t0        t0        ddk7  rt        d      t        |&j                  d`            },|,dv r8t        ddFt0        t0        dft        |*j                  d            d|% dd      S |,dk(  r8t        ddFt0        t0        dft        |*j                  d            d|% dd      S t        d      c c}w c c}}w c c}!w c c}#w c c}!w c c}#w )Nr   r   r   enabledr   r  zonboarding workflow unavailabler  r  r   zcollection authority drift"WAIT_MATCHING_CUSTOMER_PUBLICATIONr  r  r  r)  r   r   r      z*normalized schedule rewind authority driftREADY_CUSTOMER_RESUBMITr  z"submit_answer:schedule_constraintsrn  zNreply to the committed normalized rewind prompt with the exact unchanged valueREADY_CUSTOMER_ONBOARDINGzsubmit_answer:zanswer onboarding question z'/22 by replying to the committed promptr  r  z0workflow state alone never authorizes a callbackWAIT_RECONCILIATION_AUTHORITYzreconciliation:autor@  z>resolved authority precedes its matching committed publicationz$committed publication identity driftr:  r?  r   r  z,clarification field is not publication-boundREADY_CUSTOMER_CLARIFICATIONzsubmit_clarification:z5reply only to the committed field-bound clarificationz8resolved authority still has a clarification publication      r$   WAIT_DEPLOYoperatorzdeploy-final-candidatezWdeploy 4e9962be; startup must commit changed summary generation 25 before any UI actionWAIT_CANDIDATE_PUBLICATIONz1candidate-bound summary body is not yet committedr  r  r  r   u<   press latest 수정 once; generation 24/message 207 is staleSTOP_CUSTOMER_SUMMARY_QUALITYzdo-not-attest   WAIT_CANONICAL_RECONCILIATIONzBnormalized answers are not yet baseline-valid in a new publicationREADY_CUSTOMER_ATTESTattestz6press the matching committed attestation button once; r   owner_reviewowner_idr     r  @4903900d9c98c474006e512d14207439262ce405b696f4c6765dd65e1927cbd9READY_OWNER_REVIEWowner_okz8press Approve once; stale customer callbacks are retiredsafety_holdSTOP_SAFETY_HOLDzclinical-review-required>   ready
finalizingr  WAIT_AUTOMATIC_READINESSzautomatic-finalization!READY_OPERATOR_ACTIVATION_CUTOVERz!dualcoach_admin:customer:activatezbrun only after checklist evidence exists; commits registry activation then bootstrap g5->g6 ACTIVEzunknown onboarding outcomer   r  z.activation cutover is not atomically committedr   r   r~   r	  READY_OPERATOR_DISABLEzcustomer_admin:disablezCdisable exact customer, then stop service and await cleanup handoffREADY_CLEANUP_HANDOFFzsealed-cleanup:dry-runzIservice must be inactive; use sealed cleanup dry-run -> execute -> verifyz/active lifecycle customer unexpectedly disabledr   READY_CUSTOMER_START_CHECKINu   send:오늘 체크인u   after arming, send one fresh exact production alias 오늘 체크인, then press inline 오늘 체크인 시작; the pre-arm 2026-08-17 12:10 message produced no state/card and is not replayed or acceptedr   zcheckin route driftr   r  READY_CUSTOMER_CHECKIN_ANSWERzcheckin:z"answer the visible check-in promptr   READY_CUSTOMER_CHECKIN_SUMMARYzcheckin:finalizezconfirm the visible summaryr   r   r   zgeneration authority driftz&generated result lacks draft authorityWAIT_AUTOMATIC_GENERATIONzgeneration:autoz.no human action; wait for generated owner card>   heldsentrejected
supersededz&draft identity is duplicate or unknownr  r   zowner card authority driftdraft_idgeneration_token	publishedz'exact owner generation card unavailabledestinationr  zowner card route drift>   editedcreatedREADY_OWNER_DRAFT_REVIEWzdraft:z:reviewz;choose regenerate or edit if needed; otherwise approve onceapprovedREADY_OWNER_EXPLICIT_SENDz:sendz9approval never sends; press Send to customer exactly oncezunknown draft outcome)r  r   r   r   r  ro   r}   r1  r  r   r6   r7  r|   r  r   rJ  r  re   rd  r   r  r  r  r  r   r   r   r   r   r   )-r   r   r  r   r  r   r  committed_collectionr)  r   r   	committedr  r9  r@  r;  r<  genmidr:  r   
body_boundr  quality_detailr  r  r   wr   matchedr   r   r   grelevant_generationsr   r   diddrgeneration_tokenscards_valuer   carddestr~   s-                                                rv   classifyr  /  s   a	+A	*A	
z	Ba:a#666155#$GuuW~.."d# !BCCBFF7O$L VVH%FF|3&a6.GCK.G$%ABB /H$%ABB#8#; #+8"&  +..y9G-11,?J-11,?Jw-;;w'<7
#3.
#3.8"&  Vq(?*;B*?()UVV-sO
O8d	 	 +3J  014VaZL@gh  *!,	** 8"&M   	*Ggt,,,04I 3")  FOBG^^]G$(>>;;/0NB8"&[  #|4J"|4JJs*d:.>c.I$%KLLCj/C 01Nnd333g&,6&}5g>;;45>!<  &*M  2sO+E73R  %/8"&U  .b'='RJ2I"c)$78OK!%""&0x  0"&N  *9)A&J"9-@!A_!T!1" !3 3/V	 	 3"#)  Rx5g>3")_  *EG]G*&J 3"#)  '33'H !
 
 *!W5	)T*1'5AA--	*]]<0
]]<0
7D){{7#u,Js*Js*1'5AA*oN"#Ar*uuZ E)$%CDDb;;}-UV 6guEE$S)J	 	 M!"*  ++$.",  33t	 	 9::uuW~!QUU<%8A%=MNN	lBAH!T XXZ
!T"n%,h>1	  	 
 ((\  #$^
 	
 NOO	hAa*sO#2
 	
 	uuW~(C(233uuV}	!+sOl#$quuV}o&7
 	
 55%&,sOl#$0
 	
 UU8R FG&$ 
&1!T"n%,l#quu\'::	 F& 	 
 %%r*Kk4(9:: AaEE.!S(EE,155#66	 	
    !IJJ'C
 	
 AQ488H%OO 	
  
 6{aEFFQiGC 4 41
155>SV8Wg 4   %%$Kk4(9:: 
AaEE*$uuW~#rvv.@'A!BBuuW~!22EE'Nk) 	
 
 
 5zQFGG8D88M"D5UDD566!"F&&&CL&'SE!P
 	
 'CL&'SEN
 	
 0
11o
J
(
s.   An'An,An2n7$n<>n<A8oc                    t        j                  t        j                  | dd      j	                               j                         S )NTr  r   r!  )r   r   r   r#  r$  r   )r   s    rv   
event_hashr    s3    >>

1<CCEikru   c                $   | j                   j                  dd       | j                   j                  d       d}| j                         r=| j	                         j                         }|rt        j                  |d         d   n|}t        | j                         r t        d | j                         D              nd|d	|}t        |      |d<   t        j                  | t        j                  t        j                  z  t        j                  z  t        j                   z  d
      }t        j"                  |t        j$                  |dd      dz   j'                                t        j(                  |       t        j*                  |       y )NTparentsexist_ok  @0000000000000000000000000000000000000000000000000000000000000000r/  event_sha256c              3      K   | ]  }d   yw)r   Nrt   )r,  r  s     rv   r.  zappend_event.<locals>.<genexpr>  s     /;a;s   r   )schemasequenceprevious_event_sha256  r  r  ru  )parentmkdirchmodr   r   r   r   r   SCHEMAsumopenr  r   O_WRONLYO_CREATO_APPEND	O_CLOEXECwriter#  r$  fsyncclose)r  eventpreviousr  rowfds         rv   append_eventr7    s#   KKdT2KKeH{{} ++-<A4::eBi(8x37;;=C/499;//a!) 	C %S/C	r{{RZZ/"++=Le	TBHH
TZZt
CdJRRT HHRLHHRLru   c                   | j                   j                  dd       | j                   j                  d       t        j                  | t        j
                  t        j                  z  t        j                  z  d      }t        j                  |t        j                  |dd      dz   j                                t        j                  |       t        j                  |       y )NTr  r  r%  r  r  ru  )r&  r'  r(  r   r+  r,  r-  O_EXCLr0  r   r#  r$  r1  r2  )r  r   r6  s      rv   securer:  	  s    KKdT2KKe	r{{RZZ/"));U	CBHHR$**Q$:FMUUWXHHRLHHRLru   c                 F   i dt         dt        dt        dt        dt        dt
        dt        dt        d	t        d
t        dt        dt        dt        dt        dt        dt        dt         t"        t%        t&              t(        t%        t*              dS )N	successorcorewheelplan	golden_v6recovery_v6consent_receiptprofile_wheelactivation_checklistchecklist_validation_receiptreadiness_receiptreadiness_digestowner_review_receiptauthority_digestdeployment_receiptcandidate_inventorypredecessor_seal)service_stateservice_pidrecovery_sealpolling_offset_lower_bound)r	   r   r   r   r   r   r   rP   rK   rN   rR   rT   rV   rX   rZ   r\   r^   r`   r}   ra   rG   rH   rt   ru   rv   r   r     s    Y 	 		
 	V 	x 	7 	 	 0 	'(A 	5 	, 	 4 	, 	0  	2!" 	,#$ .;'&&)*D&E+ ru   c                     t         j                         D ](  \  } }t        t        | z        |k7  st	        d|         y )Nzinstalled runtime drift: )rA   r   r   SITEro   )r   r   s     rv   runtime_checkrS  ,  s9    1tax=A #<QC!@AA  ru   c                     t        j                  d d      } | j                  t        j                  t        j
                  z        }|dk  rt        d      t        |      S )NT	use_errnor   zinotify init failed)ctypesCDLLinotify_init1r   r/  
O_NONBLOCKro   r  )libcr6  s     rv   initfdr\  2  sK    ;;tt,D			BLL2==8	9B	Av233r7Nru   c                  4    e Zd ZddZddZd	dZd
dZddZy)Watcherc                Z    |j                         | _        t               | _        i | _        y r   )r  r   r\  r6  watches)r   r   s     rv   __init__zWatcher.__init__;  s    LLN	((*ru   c                    t        j                  | j                        D ]<  \  }}}|D cg c]  }|t        vs| c}|d d  | j	                  t        |             > y c c}w r   )r   walkr   SKIPr  r   )r   r  dirsr  r   s        rv   add_treezWatcher.add_tree@  sP    ''$)),JAtQ"&8$Q!4-q$8DGHHT!W -8s
   A A c                2   |j                         s|j                         sy t        j                  d d      }|j	                  | j
                  t        j                  |      t              }|dk  rt        d|       || j                  t        |      <   y )NTrU  r   zwatch failed: )r   is_dirrW  rX  inotify_add_watchr6  r   fsencodeMASKro   r`  r  )r   r   r[  r  s       rv   r  zWatcher.addE  sq    <<>{{440""477BKKNDAq5 >!!566 SVru   c                X   t        j                         }|j                  | j                  t         j                         	 |j                  |      }|st        d      t        j                  | j                  d      }d}|t        j                  z   t        |      k  rt        j                  ||      \  }}}}	|t        j                  z  }||||	z    j                  dd      d   j                         }
||	z  }|t        z  rt!        d      |t"        z  r| j$                  j'                  |t)                     |
z  }|dz  r!|j+                         r| j-                  |       |t        j                  z   t        |      k  r|j/                          y # |j/                          w xY w)Nz stage monotonic deadline expiredi   r       r   zinotify overflowi   @)	selectorsDefaultSelectorregisterr6  
EVENT_READselectry   r   readEVsizer   unpack_fromsplitr   OVERro   IGNOREDr`  r   r   rh  r  r2  )r   secondsselr  rl  offr  maskr  nnamechilds               rv   waitzWatcher.waitN  sP   '')TWWi223	JJw'E&'IJJ''$''5)CC-3s8+ "sC 84Arww3q)//q9!<CCEq$;();<<'>((DF3d:*$HHUO -3s8+ IIKCIIKs    EF F)c                B    t        j                  | j                         y r   )r   r2  r6  r   s    rv   r2  zWatcher.closef  s    
ru   N)r   r   r   None)r   r   r   r  )rz  floatr   r  )rq   rr   rs   ra  rf  r  r  r2  rt   ru   rv   r^  r^  :  s    +

!0ru   r^  c                   t         d|j                  dk(  rdndt               |j                  dk(  rdn|j                  dk(  rdnd	|j                         t	        |       t        |       d
dddddt        t              t        t              ddS )NREADY_CONTINUOUS_LIFECYCLEr  READY_FOR_DEPLOYARMED_POST_DEPLOYr  PASS_OWNER_BASELINEr  PASS_SHIPPED_CHECKIN_CLINOT_APPLICABLEz-recursive-inotify-before-snapshot-and-actionsu   오늘 체크인u   오늘 체크인 시작z2026-08-17 12:10z'no state/card; not replayed or accepted)required_after_armingexpected_inlinepre_arm_messagepre_arm_resultz=no raw updates, tokens, customer answers, or provider content)r"  r~   deployment_readinessr   baseline_validationinitial_handoffcandidate_summary_revisionauthority_sha256event_subscriptionfresh_alias_requirementper_stage_timeout_maxtotal_timeout_maxprivacy)	r)  r~   r   r   r  r  r  rD   rE   )r   prompts     rv   	ready_docr  j  s    . }}- $J }} 44 " ==$;; +% "::<&@&C&qMM%781G	$
 "%%6!7 !23R= ru   c           
        t                t        | j                        }|j                          t	        | j                        }t        |       t        |      }t        ||      }t        | j                  |       | j                  dk(  r|j                          |S t        | j                  d|j                         t        |      d       t!        t#        j$                  |d      d       t'        j(                         }|}|j*                  }	 	 t-        | j.                  t'        j(                         |z
  z
  | j0                  t'        j(                         |z
  z
        }|dk  rt3        d      |j5                  |       t	        | j                        }	t        |	      t        |      k(  rt7        ||	       t        |	      }
t        | j                  d	|j*                  |
j*                  |
j                         t        |	      d
       |
j*                  |k7  rPt!        t#        j$                  |
j                         d      d       t'        j(                         }|
j*                  }|	|
}}|
j*                  dk(  r1t8        dt;               |
j                         d|j                          S # |j                          w xY w)Narm-onlyREADY)rA  handoffr  Tr   )flushr   z"bounded lifecycle deadline expired
TRANSITION)rA  fromtor  r  r  "PASS_CONTINUOUS_TO_CLEANUP_HANDOFF)r"  r~   r   final_handoff)rS  r^  profilerf  r   r  r  r  r:  r  moder2  r7  eventsr   r  printr   r#  time	monotonicr~   minstage_timeouttotal_timeoutry   r  r  r)  r   )r  r  r   r   r   startstagelast	remainingr~  qs              rv   runr    s   O		AJJL		AaA!QA
177Avv			QUUW*Q-P 
$**Q$
't4NNEE88D%4>>#3e#;<4>>#3e#;<I A~&'KLLFF9		"A!}
1-1%A(HH(( uuw(21	 xx4djjD9F(xxaqAxx22$B (
%&UUW	 	
	I H 	
	s   FJ6 4J6 6Kc                   t        j                         }|j                  dd      }dD ]  }|j                  |      }|j	                  dt
        d       |j	                  dt
        d       |dk(  sJ|j	                  d	t
        d       |j	                  d
t        t               |j	                  dt        t                |j                  |       S )Nr  T)r  r  )r  observez	--profile)r1  r  z--readyr  z--eventsz--stage-timeout)r1  r   z--total-timeout)
argparseArgumentParseradd_subparsers
add_parseradd_argumentr   r  rB   rC   
parse_args)argvr   spr  r   s        rv   r  r    s    		 	 	"B					6B'MM$	{=	ytd;9NN:D4N@NN!7L   NN!7L   ( ==ru   c                    | j                   dk(  rWd| j                  cxk  r	t        k  r2n t        d      d| j                  cxk  rt        k  st        d       t        d      y y )Nr  r   ztimeout bound invalid)r  r  rD   r  rE   ro   )r  s    rv   validate_timeout_boundsr    si    vv4#44 455 1??7&77455 8455 8 ru   c                 h   t               } 	 t        |        t        t        j                  t        |       d             y# t        $ r(}t        d| t        j                         Y d }~yd }~wt        t        t        t        f$ r(}t        d| t        j                         Y d }~yd }~ww xY w)NTr  r   zFAIL: )file      )r  r  r  r   r#  r  ry   r  stderrro   r  r  KeyError)r  r   s     rv   mainr    s    A	"djjQ401 qcl,GZ: qcl,s#   4A 	B1
A--B1	B,,B1__main__)r   r   r   r}   r   )r   r   r   objectr   r  )r   r  r   list[dict[str, object]])r   r}   r   r  r   r}   )r   r}   )r   r  r   r}   r   r}   r   dict[str, object] | None)r   r   r   r   )r   r   r   r  )r  r   r   r   r   r  )r   r  r   r}   )r   )r   r   r   r}   r   r  )r   r   r   zBtuple[dict[str, object], str, list[dict[str, object]], int] | None)r9  r   r   tuple[bool, str])r9  r   r   r}   )r   r   r9  r   r<  r  r   r   )
r   r   r9  r   r<  r  r)  r   r   r  )r9  r   r   ztuple[bool, str | None])r9  r   r   r  )r   r   r   r  )
r   r   r9  r   r<  r  r)  r   r   r  )r   r   r   r  )r   r}   r   r}   r   r|   )r   r   r   r   r   r}   )r   r   r   r|   )r   r   r   r}   )r  r   r3  r   r   r  )r  r   r   r   r   r  )r   zdict[str, str]r  )r   r  )r   r   r  r|   r   r   )r  argparse.Namespacer   r   )r  zlist[str] | Noner   r  )r  r  r   r  )p__doc__
__future__r   r  r   rW  r   r  r   r   rn  r   structr  r  dataclassesr   datetimer   pathlibr   typingr   r	   r   r   r   r   r   r   r   r   r   r   r   r   r6   rA   rR  r)  rB   rC   rD   rE   rG   rH   rI   rK   rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   ra   rb   rd   re   rf   Structrt  rk  rx  ry  rd  RuntimeErrorro   ry   r|   r   r   r   r   r   r   r   r  r  r&  r7  rJ  rd  rw  r  r  r  r  r  r  r  r  r  r  r  r7  r:  r   rS  r\  r^  r  r  r  r  r  rq   
SystemExitrt   ru   rv   <module>r     s|   T "       	    
  !   U	5 UPe PQu QPe PR RT% TS S, ,OU O4U 4% u  2 :|,n8z%g AC @B CE OQ/q4v  Q 
,% u %& u &" 5 "" 5 "Yu Y$- E -  r  s	5  s\ % \   "{  | E  |#e 5 eYu Y"d % d\ % \` e `\ % \^ E ^_ U _\ % \` e `U !E U  0-? E ?M  
M E  V]]6
	\ 		~ 	 $
 
 
.6:$-
	)	 )),)58))IX6Dr:>/ '1:: #::z'9'9G'9T*GZ5p%%*;%LO%%P


 
 	

 

B
	%@%@%@ %@ 	%@
 %@P)X	:{2|,4B- -` F9x$6 z
TV
 ru   