docs: prove full-content P13 review packet dedup proposal
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
||||
# P13-03 レビュー資料の新規文書重複削減案(未承認・Runner未変更)
|
||||
|
||||
再提出復旧だけでは不十分と判明した。最終未提出worktreeのレビュー資料はvalidation receipt追加前でも541186bytesで500000上限を超える。正規提出SHAをまだ持たないため、この値はworking-tree preflightであり正式packet受入ではない。
|
||||
|
||||
現在のRunnerは、新規文書の全文をdiffとsourcesの両方に含める。全内容をsourcesへ一回だけ保持し、diff側では新規文書のpath・base blob不在・raw SHA・bytes・full sourceキーを示す候補をread-only prototypeで確認した。対象はP13 execution配下の新規JSON/Markdown5filesに限定。既存ファイルの差分、全コード差分、validation source、原受入ID、原仕様、500000上限は変更しない。
|
||||
|
||||
prototypeの結果は318302bytes、receipt追加前の余裕181698bytes。sourcesの集合は同一、各全文はraw bytesから供給しSHAと一致、コード差分/validation sourceは保持。7施設/84枠/6分類や未知を省略しない。JSONを不透明な圧縮文字列へ置き換えない。
|
||||
|
||||
適用時は、対象が正確な新規文書でbaseが空、候補全文がsourcesに全てあることを検証し、不一致・既存文書・コード・binary・範囲外pathではこの簡略化を使わない。重複削減対象はプロジェクト/タスク規約に明示してP13だけへ限定する。Runner実装・試験・別レビュー前にこの変更を採用済みとしない。
|
||||
|
||||
Runner側の提出復旧(core.py submit)と本案(core.py packet+tests/test_runner.py)は別の変更箇所で、両方の許可と検証が必要。修正回数を増やして再実装する案ではない。状態DB直接編集、policy/cap変更、P04/MPのrepair再開、P24の既存marker省略案の自動承認は含まない。
|
||||
|
||||
新規文書の保持、raw SHA、source一致、既存/コードへの不適用、欠けたsnapshotでの拒否、上限不変、正式validation/review/integration継続を検証する。提出後に正確な最終SHAと実receipt込みで再計測し、正式独立レビューを実行する。
|
||||
+4
@@ -14,3 +14,7 @@
|
||||
正常復旧、残る範囲違反、worker blocked結果、実行中、古い/改変結果、HEAD不一致、仕様不一致、既存review/integrationが未受入の8観点を試験する。実装・正式Runner検証・別レビュー前に復旧済みとは扱わない。
|
||||
|
||||
この案はP24の容量対策とは別の限定変更。既存P13 allowed_pathsにRunner coreは含まれず、AGENTS.mdは「タスク契約の allowed_paths 外を変更しない。追加変更は提案として返す。」と規定するため、現時点でcoreやDBを変更しない。ユーザーのmain更新許可は保持するが、ここでRunnerの提出状態制約変更への許可とは推定しない。
|
||||
|
||||
## 容量条件の追加判明
|
||||
|
||||
復旧だけでは正式review資料の541186bytes超過が残る。PACKET_PROPOSAL.mdの新規文書重複削減も別途必要。read-only prototypeは全文保持で318302bytesを示すが、Runner本体は未変更・未承認。再提出だけの許可をこの追加変更へ自動流用しない。
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"scope": "Readonly prototype against unsubmitted working tree, NOT actual formal reviewer packet",
|
||||
"original_guard_bytes": 541186,
|
||||
"proposed_guard_bytes": 318302,
|
||||
"cap_unchanged": 500000,
|
||||
"headroom_before_future_validation_receipts": 181698,
|
||||
"source_set_unchanged": true,
|
||||
"all_full_text_preserved": true,
|
||||
"code_diff_and_validation_source_unchanged": true,
|
||||
"new_document_changes": [
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-03/DIFFERENCE_LEDGER.md",
|
||||
"change": "added",
|
||||
"base_blob_absent": true,
|
||||
"raw_sha256": "41b8d9c8342ac52f4189ad1181d94e915caa31539c9b64da2b84cd235e7441e5",
|
||||
"raw_bytes": 21225,
|
||||
"full_text_source_key": "docs/plans/original-completion-2026-10-02/execution/p13-03/DIFFERENCE_LEDGER.md",
|
||||
"removed_redundant_diff_sha256": "95152ae7d5ef2cb65c6ff571a146d2d972bea9edb24302b39f96b1a70695d6b7",
|
||||
"full_content_supplied_once": true
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-03/P13_SPEC_HASH_CONTEXT.md",
|
||||
"change": "added",
|
||||
"base_blob_absent": true,
|
||||
"raw_sha256": "f21c4f49dff8c1eeb8bc7f869dfaa851613944a0b00b1bc068c74c45e5c5e846",
|
||||
"raw_bytes": 1786,
|
||||
"full_text_source_key": "docs/plans/original-completion-2026-10-02/execution/p13-03/P13_SPEC_HASH_CONTEXT.md",
|
||||
"removed_redundant_diff_sha256": "c69307c2e431bbf5554b0536bcabbf8aae6f6eecb9e16eabdc35d4ea4880e273",
|
||||
"full_content_supplied_once": true
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-03/difference-ledger.json",
|
||||
"change": "added",
|
||||
"base_blob_absent": true,
|
||||
"raw_sha256": "b7edd7fc8f5fa5602edc540a3eb8c4150b0268e7551c97a5c5ccc725ea5bb341",
|
||||
"raw_bytes": 151668,
|
||||
"full_text_source_key": "docs/plans/original-completion-2026-10-02/execution/p13-03/difference-ledger.json",
|
||||
"removed_redundant_diff_sha256": "22b344283d06071abc3bdb87019b1d33d29f32bc24662568a02bfc19ab5525b3",
|
||||
"full_content_supplied_once": true
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-03/validation.json",
|
||||
"change": "added",
|
||||
"base_blob_absent": true,
|
||||
"raw_sha256": "40e73d6897ca373d4f85217b511d4ce4c05de8dde03319e7562b31e2868c6355",
|
||||
"raw_bytes": 17970,
|
||||
"full_text_source_key": "docs/plans/original-completion-2026-10-02/execution/p13-03/validation.json",
|
||||
"removed_redundant_diff_sha256": "d789efa3b3d9ffb7128d4e2fbf993ffefb506928a413ef64469ef7256f3df6a4",
|
||||
"full_content_supplied_once": true
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-03/P13_ORDER_FINAL_REPAIR_INPUT.md",
|
||||
"change": "added",
|
||||
"base_blob_absent": true,
|
||||
"raw_sha256": "f7fb2ee06a96b520a3265243cb34cf48156a6a4f0d128522eaf59d6baa5d133d",
|
||||
"raw_bytes": 2824,
|
||||
"full_text_source_key": "docs/plans/original-completion-2026-10-02/execution/p13-03/P13_ORDER_FINAL_REPAIR_INPUT.md",
|
||||
"removed_redundant_diff_sha256": "c72fd683c0fd7b9b25c905ee9265b04c7df57d292ee097bd93d3f3deaad144f7",
|
||||
"full_content_supplied_once": true
|
||||
}
|
||||
],
|
||||
"core_modified": false,
|
||||
"formal_review_invoked": false
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
import sys,json,subprocess,hashlib,re
|
||||
from pathlib import Path
|
||||
sys.path.insert(0,'/Users/korizatou114/Antigravity/環境構築/agent-control')
|
||||
from runner.core import Runner,git,allowed,secret_path,safe_relative,CONTROL
|
||||
r=Runner('the-tree-p13-03');t=r.task('P13-03');c=json.loads(t['contract']);w=Path(t['worktree']);names=r.check_scope('P13-03',w);sources={p:(w/p).read_text() for p in sorted(set(git(w,'ls-tree','-r','--name-only','HEAD').splitlines()+names)) if allowed(p,c['allowed_paths']) and not secret_path(p)};diff=git(w,'diff','--no-ext-diff',c['base_commit']);
|
||||
for p in git(w,'ls-files','--others','--exclude-standard').splitlines():
|
||||
v=subprocess.run(['git','diff','--no-index','--no-ext-diff','--','/dev/null',p],cwd=w,capture_output=True,text=True);assert v.returncode in [0,1];diff+='\n'+v.stdout.strip()
|
||||
testpaths={a for vid in c['validation_ids'] for a in r.config['validations'][vid]['argv'] if safe_relative(a) and not secret_path(a)};body={'contract':c,'commit':'0'*40,'spec':git(w,'show','HEAD:'+c['spec_ref']),'acceptance':[a for a in r.baseline if a['id'] in c['acceptance_ids']],'rules':(CONTROL/'AGENTS.md').read_text(),'allocation':r.allocation('P13-03'),'diff':diff,'sources':{p:s.strip() for p,s in sources.items()},'validation_sources':{p:s.strip() for p,s in sources.items() if any(p==a or p.startswith(a.rstrip('/')+'/') for a in testpaths)},'tests':[]};old=json.loads(json.dumps(body));parts=re.split(r'(?=^diff --git )',diff,flags=re.M);kept=[];records=[]
|
||||
for part in parts:
|
||||
if not part.startswith('diff --git '):kept.append(part);continue
|
||||
header=part.splitlines()[0];p=header.split(' b/',1)[1]
|
||||
eligible=p.startswith('docs/plans/original-completion-2026-10-02/execution/p13-03/') and Path(p).suffix in ['.json','.md'] and '\nnew file mode ' in part
|
||||
if not eligible:kept.append(part);continue
|
||||
assert p in sources
|
||||
v=subprocess.run(['git','cat-file','-e',c['base_commit']+':'+p],cwd=w,capture_output=True);assert v.returncode!=0
|
||||
raw=(w/p).read_bytes();literal=raw.decode('utf-8');assert literal==sources[p]
|
||||
body['sources'][p]=literal
|
||||
records.append({'path':p,'change':'added','base_blob_absent':True,'raw_sha256':hashlib.sha256(raw).hexdigest(),'raw_bytes':len(raw),'full_text_source_key':p,'removed_redundant_diff_sha256':hashlib.sha256(part.encode()).hexdigest(),'full_content_supplied_once':True})
|
||||
body['diff']=''.join(kept);body['new_document_changes']=records
|
||||
assert len(records)==5
|
||||
assert set(body['sources'])==set(old['sources'])
|
||||
for p in body['sources']:assert body['sources'][p].strip()==old['sources'][p]
|
||||
for p in body['sources']:
|
||||
if p.startswith('tools/'):assert body['sources'][p]==old['sources'][p]
|
||||
assert body['validation_sources']==old['validation_sources'];assert 'tools/check_p13_content_difference.py' in body['diff']
|
||||
receipt={'scope':'Readonly prototype against unsubmitted working tree, NOT actual formal reviewer packet','original_guard_bytes':len(json.dumps(old).encode()),'proposed_guard_bytes':len(json.dumps(body).encode()),'cap_unchanged':500000,'headroom_before_future_validation_receipts':500000-len(json.dumps(body).encode()),'source_set_unchanged':True,'all_full_text_preserved':True,'code_diff_and_validation_source_unchanged':True,'new_document_changes':records,'core_modified':False,'formal_review_invoked':False};Path('/private/tmp/the-tree-p13-new-doc-packet-prototype.json').write_text(json.dumps(receipt,ensure_ascii=False,indent=2)+'\n');print(json.dumps({k:v for k,v in receipt.items() if k!='new_document_changes'},ensure_ascii=False))
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"scope": "Working-tree reviewer payload preflight only; no submitted SHA or formal validation receipts yet",
|
||||
"task_state": "blocked",
|
||||
"source_HEAD": "7645c55149d3bebf3ed602cf3039b15b28fa376f",
|
||||
"scope_recheck_passed": true,
|
||||
"changed_paths": [
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/DIFFERENCE_LEDGER.md",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/P13_ORDER_FINAL_REPAIR_INPUT.md",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/P13_SPEC_HASH_CONTEXT.md",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/difference-ledger.json",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/validation.json",
|
||||
"tools/check_p13_content_difference.py"
|
||||
],
|
||||
"no_active_runs": true,
|
||||
"guard_bytes_without_future_validation_receipts": 541186,
|
||||
"guard_cap": 500000,
|
||||
"additional_budget_remaining": -41186,
|
||||
"source_pins": {
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/DIFFERENCE_LEDGER.md": "41b8d9c8342ac52f4189ad1181d94e915caa31539c9b64da2b84cd235e7441e5",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/P13_ORDER_FINAL_REPAIR_INPUT.md": "f7fb2ee06a96b520a3265243cb34cf48156a6a4f0d128522eaf59d6baa5d133d",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/P13_SPEC_HASH_CONTEXT.md": "f21c4f49dff8c1eeb8bc7f869dfaa851613944a0b00b1bc068c74c45e5c5e846",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/difference-ledger.json": "b7edd7fc8f5fa5602edc540a3eb8c4150b0268e7551c97a5c5ccc725ea5bb341",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p13-03/validation.json": "40e73d6897ca373d4f85217b511d4ce4c05de8dde03319e7562b31e2868c6355",
|
||||
"tools/check_p13_content_difference.py": "7d7c9b3d87d54217aa8251828240c43c1054e5b64c80808caf994b491c25c2dd"
|
||||
},
|
||||
"formal_review_invoked": false,
|
||||
"state_or_policy_modified": false
|
||||
}
|
||||
@@ -254,6 +254,6 @@
|
||||
"validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e",
|
||||
"validate_plan.py": "23678227d9b3c556f1bd903f4b5b3147c4a82ce5085e10055481026803451b80",
|
||||
"validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27",
|
||||
"work_packages.json": "5975e73c5912d56d00efcc1f280ef29c8a615cc42d5ad5a689a6ee4a5b2253c2"
|
||||
"work_packages.json": "f3bbd913709adec4b1057d5c1a7d9395f243fbda91c83a817f8b7360c2084c99"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7733,12 +7733,12 @@
|
||||
"scope": "Actual Claude run decision, not completion."
|
||||
}
|
||||
],
|
||||
"progress_summary": "最終worker成果は7施設/84使用枠/施設外6分類を共有参照で保持し、--verify-onlyと必須負例18種に対応。root局所確認はPASS、現main適用性もschema2比較で確認。Runner提出はroot読取診断が生成した範囲外pycで停止。pycをSHA一致でcheckout外へ保存し範囲違反は解消したが、Runnerはblocked再提出不可・修正2/2。最終5filesを未採用checkpointへ内容保持保存。限定的再提出復旧案のRunner変更許可待ち。正式検証/正式独立レビュー/統合未実施、受入0。",
|
||||
"progress_summary": "最終worker成果は7施設/84使用枠/施設外6分類を共有参照で保持し、--verify-onlyと必須負例18種に対応。root局所確認はPASS、現main適用性もschema2比較で確認。Runner提出はroot読取診断が生成した範囲外pycで停止。pycをSHA一致でcheckout外へ保存し範囲違反は解消したが、Runnerはblocked再提出不可・修正2/2。最終5filesを未採用checkpointへ内容保持保存。限定的再提出復旧案のRunner変更許可待ち。正式検証/正式独立レビュー/統合未実施、受入0。 キャッシュ隔離後のRunner check_scope再検査はPASS・実行中runなし。未提出版のreview資料は541186bytesで500000上限超を確認。新規文書の全文を保持し差分側重複だけ除くreadonly prototypeは318302bytes、受入省略0・code/validation保持。再提出復旧+新規文書資料削減の限定Runner変更案を提示し許可待ち。",
|
||||
"remaining_gaps": [
|
||||
"範囲外cache解消後の提出を、修正上限を増やさず正規Runner経路で復旧するための限定変更許可・実装/検証。",
|
||||
"再提出復旧と新規文書の重複送信削減を、修正回数/500000上限/全内容/正式ゲートを維持してRunnerへ限定実装するための許可・実装・検証。",
|
||||
"最終提出SHAの正確argv正式検証、exact資料容量確認、別Claude正式レビュー、統合。"
|
||||
],
|
||||
"updated_at_jst": "2026-10-13T03:51:54.485077+09:00"
|
||||
"updated_at_jst": "2026-10-13T03:57:28.764352+09:00"
|
||||
}
|
||||
],
|
||||
"estimate_person_days_historical_2026_09_29": [
|
||||
|
||||
Reference in New Issue
Block a user