23 lines
4.2 KiB
Python
23 lines
4.2 KiB
Python
import pathlib,json,sqlite3,datetime,ast,subprocess
|
|
R=pathlib.Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');E=R/'docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015';W='/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/P04-01-implement'
|
|
def required(raw):return next(ast.literal_eval(n.value) for n in ast.parse(raw).body if isinstance(n,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='REQUIRED' for t in n.targets))
|
|
assert required(subprocess.check_output(['git','-C',W,'show','5475391647a29d5fcb8eec4b416cfa14cf4d4a2c:tools/check_p04_order_evidence.py']))==required((pathlib.Path(W)/'tools/check_p04_order_evidence.py').read_bytes())
|
|
c=sqlite3.connect('file:/Users/korizatou114/Library/Application Support/agent-control/the-tree-p04-01/state.sqlite?mode=ro',uri=True);c.row_factory=sqlite3.Row
|
|
t=dict(c.execute("SELECT state,submitted,repairs FROM tasks WHERE id='P04-01'").fetchone());runs=[dict(x) for x in c.execute("SELECT id,service,pid FROM runs WHERE task_id='P04-01' AND status='running'")]
|
|
assert len(runs)==1 and runs[0]['service']=='codex' and t['repairs']==11
|
|
summary='S1修正版dd20をRoot製品1338sourceで実測しimport/parse/Writer/別PIDReader全PASS。停電中ledger0/孤立0/対象着床各1、着床不能remaining4→4、14正式slot原56+copy56member全SHA一致/14typed状態一致、owned4終了/全guard0。初回646のfixture型誤読2failも保持。S2a初回10はRootのtemplate配置漏れで変更0/engine0終了、原3資料をSHA一致で補充。実Opusが同S2aをSol repair11へ自己完結指示し通常実行中。夜番不在/残業はS2b。S3不足境界・全raw collector・未検証Aの実HEAD/FS結合・必須whole検証・独立whole review・通常統合finalは残る。既存15条件+EVは547から不変、原7領域/安全性3結果/30-88/部分点0・原成果加点0。'
|
|
p=R/'docs/plans/original-completion-2026-10-02/work_packages.json';d=json.loads(p.read_text());now=datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))).isoformat()
|
|
def walk(v):
|
|
if isinstance(v,dict):
|
|
if v.get('id')=='P04':v.update(current_summary=summary,updated_at_jst=now)
|
|
if v.get('id')=='P04-01':
|
|
v.update(current_summary=summary,progress_summary=summary,updated_at_jst=now,current_recheck='execution/p04-01-current-recheck-20261015/CURRENT_ACCEPTANCE_STATUS.json',historical_initial_recheck='execution/p04-01-current-recheck-20261015/recheck.json')
|
|
v['remaining_gaps'][2]='S1 dd20の2case実測と14正式別PID復元は収集済み。次はSol repair11のS2aで00:00売上/給与・勤務結合/維持費と実1440再呼出しを収集し、S2b夜番不在/残業、S3不足境界、動的全raw collectorへ進む。保持中Aの実候補HEAD/FS照合とfixture/必須whole検証は未達。'
|
|
u=v['owner_policy_update'];u.update(actual_commander='execution/p04-01-current-recheck-20261015/OPUS_REPAIR11_S2_RUN_DECISION.json',run_decision='execution/p04-01-current-recheck-20261015/OPUS_REPAIR11_S2_RUN_DECISION.json',runner_state=t['state'],repairs=t['repairs'],submitted=t['submitted'],registered_validation='085334671e7c43febd127d1003e6ecbb',actual_run=runs[0]['id'],current_scope='S2a midnight actual sale/payroll/duty/upkeep/real same-minute recall/formal restore code preparation; S1 retained/passed, S2b pending, A unverified',current_native_result='execution/p04-01-current-recheck-20261015/ROOT_S1_NATIVE_R02_RESULT.json',prior_native_failure='execution/p04-01-current-recheck-20261015/ROOT_S1_NATIVE_R01_RESULT.json')
|
|
for a in v.values():walk(a)
|
|
elif isinstance(v,list):
|
|
for a in v:walk(a)
|
|
walk(d);p.write_text(json.dumps(d,ensure_ascii=False,indent=2)+'\n')
|
|
s=E/'CURRENT_ACCEPTANCE_STATUS.json';v=json.loads(s.read_text());v['runner_state']={'state':t['state'],'repairs':t['repairs'],'live_run':runs[0],'actual_opus_decision':'OPUS_REPAIR11_S2_RUN_DECISION.json','worker_model':'gpt-6.1-sol','original_required_unchanged_from_submitted_547':True};v['root_supplied_missing_templates']='ROOT_S2_EXISTING_TEMPLATE_SUPPLY_R02.json';s.write_text(json.dumps(v,ensure_ascii=False,indent=2)+'\n')
|
|
(E/'p04-s1-ledger-update.py').write_bytes(pathlib.Path(__file__).read_bytes());print(json.dumps({'task':t,'live_run':runs[0]},ensure_ascii=False))
|