Record P08-03 exact native OS review proof and lossless storage recovery
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
## 現在の対象(2026-10-13・現版監査更新)
|
||||
|
||||
2026-10-15 現在の閉鎖対象はP08-03。正式11/着手25/予定52、原30パッケージ/88成果単位と部分点なしを維持する。修正20の提出d369d1c399f7506bdb8d980b642ad0da216d14f4(実Opus 5.5指示/同一6.1-sol担当)を凍結。修正19の受動fixture可視性・終端制御を保持し、R09履歴の存在による新版誤振分けと実PNG/JPEGの検証経路をchecker/試験/文書だけで修正。Root局所153件全PASS、Python構文PASS、標準import・313構文・native writer196/別PID reader96もPASS、全所有終了・保護/終了エラー0。実nativeをcheckerへ渡し現行版経路が未収集OS証跡要求(line907)まで通ることを確認。正確な新版の全176回帰を1回実行中。f5版全回帰は誤振分け発見時にphase013で制御終了し、旧fd643全回帰も新版転用なし。通常パレット左右移動と受付選択は短いOS診断で成立。原P08-03は連続通常OS全5条件・別PID再開、全回帰完結、独立Opusレビュー、統合最終確認と台帳閉鎖が未達、正式加点0。R15の未成立reveal31は未受入履歴でMacロックと区別する。重複実装なし。共有Runtime支援dbf5cb8の原88加点0。個別上限は撤廃済み、以下の古い上限・承認待ちは履歴であり停止理由ではない。
|
||||
2026-10-15 現在の閉鎖対象はP08-03。正式11/着手25/予定52、原30パッケージ/88成果単位と部分点なしを維持する。凍結提出d369d1c399f7506bdb8d980b642ad0da216d14f4(実Opus 5.5指示/同一6.1-sol担当)はRoot局所153件・Python構文・313 Godot構文・native writer196/別PID reader96・全176回帰20,488厳密チェックPASS。R19の通常OS writer21643(58要求)/reader32505(4要求)は連続全5条件・正式保存再開まで終了0、保護/終了エラー0。原証跡923項目の整合性検査は不足0、登録済みRunner検証PASS、別Opus 5.5セッションad6828d3で独立レビュー実行中。最初の実画像記録先誤りは同一バイト対応表と完全呼出traceで開示し、旧R18該当画像は受入転用しない。全回帰後の終了済み試験プロファイル2,817ファイルはSHA/mtime/パス保持圧縮、実空き約1.79GB回収。実行版と統合版の厳密適用性・統合最終確認・正式台帳閉鎖が未達で加点0。f5中断回帰と旧fd643全回帰は新版へ転用しない。R18は約5時間の処理間隔中に要求2が期限超過した不完全履歴。重複実装なし。共有Runtime支援dbf5cb8の原88加点0。個別上限撤廃済み、以下の古い上限・承認待ちは履歴であり停止理由ではない。
|
||||
|
||||
|
||||
原30パッケージ/88成果、部分点なし。現在は正式10/着手24/予定54。P24-03は正式完了、MP-01-r02承認用資料は正式統合済みだが原88へ加点しない。P13-03既存最終修正は全7施設/84スロット/6分類が保全済み。P13/RP13の限定追加修正と正式host自己試験は直接許可待ちで、重複実装や無断上限変更をしない。
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||
"formal_acceptance": false,
|
||||
"original_unit_credit": 0,
|
||||
"Root_integrity_deficits": [],
|
||||
"registered_validation": "pass",
|
||||
"independent_review": {
|
||||
"status": "pass",
|
||||
"job": "ad6828d3170344f9a8b1b5b75fdd6a78",
|
||||
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-03-code/runs/ad6828d3170344f9a8b1b5b75fdd6a78/result.json",
|
||||
"sha256": "560050d8c031a9cfd6de3c458f9d97c9fb92d55248376b36571e75bc89a88435"
|
||||
},
|
||||
"OS_phases": [
|
||||
{
|
||||
"role": "writer",
|
||||
"actual_pid": 21643,
|
||||
"exit_code": 0,
|
||||
"engine_ended": true,
|
||||
"error": null,
|
||||
"guard_errors": [],
|
||||
"cleanup_errors": [],
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"role": "reader",
|
||||
"actual_pid": 32505,
|
||||
"exit_code": 0,
|
||||
"engine_ended": true,
|
||||
"error": null,
|
||||
"guard_errors": [],
|
||||
"cleanup_errors": [],
|
||||
"passed": true
|
||||
}
|
||||
],
|
||||
"writer_requests": 58,
|
||||
"reader_requests": 4,
|
||||
"conditions": [
|
||||
"support_connection",
|
||||
"invalid_position_reason",
|
||||
"demolish_rebuild",
|
||||
"pan_zoom_world_identity",
|
||||
"separate_pid_resume"
|
||||
],
|
||||
"original_index_sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b",
|
||||
"evidence_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||
"evidence_recording_correction": "First current writer capture bytes were initially written under R18 by a stale helper closure, then copied byte-identically to R19 with explicit mapping. No old R18 PID16041 gameplay was reused. Original R18 first capture files are invalid as original R18 evidence after this overwrite. Root disclosed the error, and subsequent helpers use self-owned root/app properties.",
|
||||
"full_call_trace": "All requests carry supplemental actual session call IDs/arguments, including property-based reader app calls omitted by the narrower original receipt collector. Original receipts unchanged.",
|
||||
"Root_full176": "FULL_REGRESSION_D369D1C_R01_PASS.json",
|
||||
"Root_local153": "REPAIR20_ROOT_VERIFICATION_D369D1C.json",
|
||||
"remaining": [
|
||||
"independent all-five semantic review result",
|
||||
"honest executed-vs-integration binding preserving original raw files",
|
||||
"integration and final verification",
|
||||
"original unit ledger closure",
|
||||
"global Windows same-distribution physical acceptance remains open"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||
"historical_builds_preserved": [
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r05-4a17d0e0",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r05-4a17d0e0"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r08-4f3b42df",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r08-4f3b42df"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r07-0c5e0022",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r07-0c5e0022"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r01-7dd450c6",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r01-7dd450c6"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r04-8e3d79d5",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r04-8e3d79d5"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r06-d0128636",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r06-d0128636"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/p08-normal-placement-evidence"
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r02-c2b59f04",
|
||||
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r02-c2b59f04"
|
||||
}
|
||||
],
|
||||
"validation_alias": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||
"original_raw_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||
"after_validation": "Materialize byte-identical proof in registered build for complete independent review; raw original paths remain readable and immutable."
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||
"runtime": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03",
|
||||
"roots": [
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||
"pin_file": "index.json",
|
||||
"sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17",
|
||||
"pin_file": "index.json",
|
||||
"sha256": "16c3577ca226173fea65df8595ab42a8b257ba50166da1a8564e6eda126694a1"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-d369d1c-r01",
|
||||
"pin_file": "runner-ended.json",
|
||||
"sha256": "0dbe71e589113088bd37be42fef583b8f6da86a15542f4900ed97fa957fc1264"
|
||||
}
|
||||
],
|
||||
"permission": "read-only exact same-task synthetic game proof; no write rules changed; no personal/auth data",
|
||||
"owner_scope": "existing user-directed multi-agent implementation and independent review with complete raw evidence"
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||
"state_after_registered_validation": "review_pending",
|
||||
"raw_index_sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b",
|
||||
"mirror_bytes_verified": 925,
|
||||
"raw_original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||
"materialized_build_root": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||
"no_raw_mutations": true
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"unit": "P08-03",
|
||||
"blocking_findings": 0,
|
||||
"deferred": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "In `completion_marker_contracts.json`, the new entry for `tests/transport/test_runtime_build_preview.gd` has the wrong authority. It points to `docs/spec/acceptance/P08-03.json` with scope \"normal placement; native and OS pending\", but that suite belongs to the support task P08-03-RTPREVIEW. The registration itself is needed, but the authority and scope text should name the RTPREVIEW spec."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "`main.gd` `_preview_demolition` opens the confirmation dialog even when the clicked cell has no facility; the dialog shows an empty facility ID. Confirming then sends `demolish_facility` with an empty `instance_id`, and the Runtime refuses it. The game state stays correct, but the UX could tell the user no facility is selected instead of opening the dialog."
|
||||
}
|
||||
],
|
||||
"reason": "Independent review PASS; nonblocking metadata/empty-cell demolition UX; preserve exact accepted source and do not broaden current unit."
|
||||
}
|
||||
+1365
File diff suppressed because it is too large
Load Diff
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"task_id": "P08-03",
|
||||
"commit": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||
"status": "pass",
|
||||
"summary": "The single acceptance item P08-03 and all five required conditions are met for candidate d369d1c. The evidence was collected at that exact candidate:\n- Real macOS OS input: writer PID 21643 (58 requests) and reader PID 32505 (4 requests).\n- Native runs r17.\n- Full regression: 176 suites passed.\n- The registered `check_p08_normal_placement_evidence.py --verify-only` run passed with no deficits.\n\n**support_connection:** Two positive cases built through the normal palette and completed: `reception` at (-8,0) with a CONNECTED path, and the lower/upper `guest_stairs` at (4,1)/(4,2). Two rejection cases were refused with no command submitted: `standard_room` unsupported at (10,4) (`UNSUPPORTED`), and `guest_stairs` with no landing below at (-8,2) (`STAIR_LANDING_MISSING`). The preview now uses the shared Runtime precheck (`preview_build_facility`), so preview and command give the same result.\n\n**invalid_position_reason:** The out-of-bounds case at (12,0) returns `OUT_OF_BOUNDS` first and shows \"世界の範囲外です\". The overlap case returns `OVERLAP` and shows \"重なります\". In every rejection the displayed status matches the first error code or the Runtime message. The checker's `preserve()` compares the full typed state and allows no difference except the command envelope.\n\n**demolish_rebuild:** A demolition entry, confirmation dialog and cancel were added to the normal palette, and they call the existing `demolish_facility` Runtime command.\n- Refused demolition of the supporting stair returns `STAIR_LANDING_IN_USE`, and its message is shown.\n- Cancel submits no command, and the state is unchanged.\n- The real demolition removes only `facility_00000001`; the refund (資材 2) matches the resource change.\n- Rebuilding on the same cell (-8,0) creates `facility_00000004`.\n\n**pan_zoom_world_identity:** Panning used move mode with an ordinary wheel and no Ctrl. Zoom steps clamp at 0.5 and 4.0, which matches the existing `clampf(value, 0.5, 4.0)` in `world_preview.gd`. The same world cell (-8,0,0) was selected at a moved pixel position (290,483 → 547,516), and the selected entity is `facility_00000004`.\n\n**separate_pid_resume:** The formal save was written by the writer process. A separate reader process resumed it, `facility_00000004` still occupies (-8,0,0), and the same cell is refused as `OVERLAP` through the normal palette.\n\n**Scope:** Product changes are limited to `main.gd` and `world_preview.gd`. The Runtime change comes from the separately reviewed and integrated support task P08-03-RTPREVIEW (dbf5cb8). The `suite-policy.json` change only adds the source-SHA-pinned ordinary cleanup policy for the new suite. No tests were deleted or disabled.\n\n**Still open (Root's responsibility, not this review):** integration, final verification on the merged result, and the ledger update. Windows same-distribution/device acceptance stays open at the global platform level, and the Mac evidence is not counted for Windows. The fixture is tagged as diagnostic setup, not natural play. The 30-package/88-unit denominator is unchanged.",
|
||||
"acceptance_ids": [
|
||||
"P08-03"
|
||||
],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "In `completion_marker_contracts.json`, the new entry for `tests/transport/test_runtime_build_preview.gd` has the wrong authority. It points to `docs/spec/acceptance/P08-03.json` with scope \"normal placement; native and OS pending\", but that suite belongs to the support task P08-03-RTPREVIEW. The registration itself is needed, but the authority and scope text should name the RTPREVIEW spec."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "`main.gd` `_preview_demolition` opens the confirmation dialog even when the clicked cell has no facility; the dialog shows an empty facility ID. Confirming then sends `demolish_facility` with an empty `instance_id`, and the Runtime refuses it. The game state stays correct, but the UX could tell the user no facility is selected instead of opening the dialog."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "Collection note in `P08-03_INDEPENDENT_REVIEW_CONTEXT.json`: a helper first wrote the writer's current screenshots to an old directory, and Root then moved them with a SHA mapping (`recording-path-correction.json`, `complete-cua-call-trace.json`). The checker re-verified the bytes and request bindings and passed. The integration reviewer should keep this record with the evidence."
|
||||
}
|
||||
]
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"decision": {
|
||||
"action": "prepare-integration",
|
||||
"task_id": "P08-03",
|
||||
"reason": "Read-only design review of the Root integration adapter for P08-03 at E=d369d1c, checked against direction 910bbd05 and tools/check_p08_normal_placement_evidence.py at E. This is a planning decision only. I do not run prepare-integration myself, and no worker is dispatched.\n\n**Verdict:** no defect blocks the adapter. Each requirement you listed is covered as follows.\n\n1. **All 5 conditions remain required.** The adapter calls the unchanged checker on the executed tree, gate.check(W, PROOF), and requires an empty deficit list.\n - check() at :633-1021 still enforces `index['conditions'] == CONDITIONS` (all 5) at :639.\n - It also checks source and input freshness (:653-654), the spec sha (:655), the marker (:656), and the commit against HEAD of W, which equals E (:659).\n - It also checks the raw native and OS PIDs, lifecycle, profile guard, strict marker, screenshots and transformed cells (:669-1016).\n - check() catches its errors and returns them as a list (:1020-1021), so `need(deficits == [])` is the right gate.\n2. **Source and inputs equal except progress line 3.**\n - `sources == idx['source_map']` is computed on the final tree with the checker's own runner.source_refs.\n - input_map(wt) must have the same roster as at E, and every value except PLAN must be equal. input_map (:143-149) includes the spec, marker contract, AGENTS, recorder, BASELINE and all of tests/fixtures/p08-03.\n - For PLAN: the line count must match, lines 1-2 and lines 4 onward must be byte-identical, and line 3 must start with '> ' in both versions. `a[2]` is line 3, so the indexing is correct.\n3. **Raw evidence stays immutable.**\n - The adapter checks the pinned INDEX_SHA and that `index.commit == E`.\n - It rehashes every artifact for size and sha, rejecting symlinks and paths that escape PROOF.\n - It only reads from PROOF and FULL. Its single write goes to the build directory, and that write is idempotent: it must match any existing file byte for byte.\n4. **Full 176-suite source equality.**\n - runner-input `selected_source_map == sources` (the final tree's map, which equals the E map).\n - runner-ended requires passed, engine_ended, 176 suites, 20488 strict checks, and no errors, failures, unexecuted tests or missing markers.\n - The receipt pins are rehashed.\n - The engine sha256 must match both the native run's engine sha256 and a fresh hash of the engine binary.\n5. **No fabricated reruns.** The report records `new_native_runs: 0`, `new_os_runs: 0` and `raw_evidence_modified: false`, and records E and F separately.\n6. **No false relabelling of the candidate.**\n - The final tree must equal Git's ordinary `merge-tree --write-tree` of main_base and E, so there are no hand edits in the merge.\n - The merge must have exactly two parents, with parents[1] == E.\n - For kind=integration, main must be at main_base. For kind=final, the registered candidate and main_base must match.\n - The scope stays macOS-only, and Windows stays open.\n - The adapter only intercepts the Runner's verify step for this project, this task and kind integration or final. Every other kind falls through to the original verify.\n\n**Non-blocking notes**\n- (a) The adapter ignores what `runner.has_evidence(...)` returns. If that function returns a bool rather than raising, both calls are no-ops. Wrap them as `need(runner.has_evidence(...), 'executed validation/review evidence')`.\n - Practical risk is low: the task is already reviewed at E, so that evidence exists.\n - I could not read the Runner core (verify, prepare, integrate, has_evidence) because file access is limited to the worktree. This is a context gap; Root should confirm this point there.\n- (b) `git merge-tree --write-tree` needs Git 2.38 or later.\n- (c) The source-map equality covers only the inventoried source. Paths outside it, such as docs or other tasks' files, can come from main. That is acceptable because the merge-tree equality forbids any manual merge edits.\n\n**Still pending after this step:** Runner integration and the current final verification under this adapter, the ledger, the main update through the Runner, and Windows same-distribution/device acceptance (stays open, with no Mac substitution). No change to the spec, denominator, budget or acceptance.",
|
||||
"codex_model": "gpt-6.1-sol",
|
||||
"codex_model_reason": "No Codex worker is dispatched by this decision; this is a Runner integration step only. I keep the default, gpt-6.1-sol, recorded for continuity. Nothing here needs implementation work or debugging across components, so Astra would cost more time and usage for no quality gain."
|
||||
},
|
||||
"root_followup": [
|
||||
"Actual plan line3 is plain Japanese dated progress summary, not Markdown blockquote; strict prefix assertion corrected to the existing P08-03 progress phrase. All other lines must be byte equal.",
|
||||
"Runner.has_evidence raises GateError on missing records; confirmed core source, no boolean no-op.",
|
||||
"No worker dispatched; existing user main update authorization applies."
|
||||
]
|
||||
}
|
||||
+13
File diff suppressed because one or more lines are too long
+23
@@ -0,0 +1,23 @@
|
||||
"""Read-only route to SHA-fixed proof for the existing P08 task, not new permissions to write."""
|
||||
import hashlib,json
|
||||
from pathlib import Path
|
||||
def install(core):
|
||||
pins=json.loads(Path(__file__).with_name("D369_REGISTERED_PROOF_READ_PINS.json").read_text());runtime=Path(pins["runtime"]).resolve();parent=runtime.parents[1];original=core.seatbelt
|
||||
def scoped(worktree,run_root,writable,service=None):
|
||||
profile=original(worktree,run_root,writable,service)
|
||||
if Path(run_root).resolve()!=runtime or Path(worktree).resolve().parent!=parent or not Path(worktree).name.startswith("P08-03-"):return profile
|
||||
core.require(core.git(worktree,"rev-parse","HEAD")==pins["candidate"],"exact proof candidate")
|
||||
roots=[]
|
||||
for row in pins["roots"]:
|
||||
path=Path(row["path"]).resolve();core.require(path.name.startswith("p08-03-") and path.parent.name=="original-completion-2026-10-02","same-task proof root")
|
||||
core.require(hashlib.sha256((path/row["pin_file"]).read_bytes()).hexdigest()==row["sha256"],"fixed original proof pin")
|
||||
roots.append(path)
|
||||
rows=profile.splitlines();slots=[i for i,s in enumerate(rows)if s.startswith("(deny file-read-data (require-all ")];core.require(len(slots)==1,"known read profile")
|
||||
clauses=set()
|
||||
for origin in roots:
|
||||
clauses.add("(require-not (subpath "+json.dumps(str(origin),ensure_ascii=False)+"))")
|
||||
for p in origin.parents:
|
||||
if p.is_relative_to(Path.home()):clauses.add("(require-not (literal "+json.dumps(str(p),ensure_ascii=False)+"))")
|
||||
i=slots[0];core.require(rows[i].endswith("))"),"known read profile ending");rows[i]=rows[i][:-2]+" "+" ".join(sorted(clauses))+") )"
|
||||
return "\n".join(rows)
|
||||
core.seatbelt=scoped
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
"""Bind immutable executed P08 proof to a merge with equal product/input bytes.
|
||||
|
||||
Only progress-summary line 3 in IMPLEMENTATION_PLAN may differ. Never mutate
|
||||
the executed index, receipts, screenshots or full-regression evidence.
|
||||
"""
|
||||
import difflib
|
||||
import hashlib
|
||||
import importlib.util
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
E = 'd369d1c399f7506bdb8d980b642ad0da216d14f4'
|
||||
R = Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部')
|
||||
W = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement')
|
||||
D = R/'docs/plans/original-completion-2026-10-02/execution/p08-03'
|
||||
A = R/'artifacts/original-completion-2026-10-02'
|
||||
PROOF = A/'p08-03-native-os-d369d1c-r19-calibrated'
|
||||
FULL = A/'p08-03-final-regression-d369d1c-r01'
|
||||
PLAN = 'docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md'
|
||||
INDEX_SHA = 'fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b'
|
||||
|
||||
def sha(p):
|
||||
h = hashlib.sha256()
|
||||
with Path(p).open('rb') as f:
|
||||
for b in iter(lambda:f.read(1048576), b''): h.update(b)
|
||||
return h.hexdigest()
|
||||
|
||||
def git(p, *args):
|
||||
return subprocess.check_output(['git','-C',str(p),*args])
|
||||
|
||||
def need(ok, message):
|
||||
if not ok: raise ValueError(message)
|
||||
|
||||
def load(p): return json.loads(Path(p).read_bytes())
|
||||
|
||||
def checker():
|
||||
spec = importlib.util.spec_from_file_location('p08_executed_checker',W/'tools/check_p08_normal_placement_evidence.py')
|
||||
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m); return m
|
||||
|
||||
def bind(runner, task_id, wt, final_sha, kind):
|
||||
need(runner.config['project']=='the-tree-p08-03-code' and task_id=='P08-03', 'exact task')
|
||||
need(kind in ('integration','final'), 'exact verification kind')
|
||||
wt=Path(wt); task=runner.task(task_id)
|
||||
need(task['submitted']==E and git(W,'rev-parse','HEAD').decode().strip()==E, 'executed revision')
|
||||
need(not git(W,'status','--porcelain').strip() and not git(wt,'status','--porcelain').strip(), 'clean sources')
|
||||
need(git(wt,'rev-parse','HEAD').decode().strip()==final_sha, 'final revision')
|
||||
runner.has_evidence(task_id,'validation',E); runner.has_evidence(task_id,'review',E)
|
||||
parents=git(wt,'show','-s','--format=%P',final_sha).decode().split()
|
||||
need(len(parents)==2 and parents[1]==E, 'exact two-parent merge')
|
||||
main_base=parents[0]
|
||||
if kind=='integration': need(git(runner.repo,'rev-parse','main').decode().strip()==main_base, 'current main base')
|
||||
else: need(task['candidate']==final_sha and task['main_base']==main_base, 'registered final binding')
|
||||
# The merge must be exactly Git's ordinary merge of these two inputs.
|
||||
merged=git(wt,'merge-tree','--write-tree',main_base,E).decode().splitlines()[0]
|
||||
need(merged==git(wt,'rev-parse',final_sha+'^{tree}').decode().strip(), 'unexpected merge edits')
|
||||
need(sha(PROOF/'index.json')==INDEX_SHA, 'immutable raw index')
|
||||
idx=load(PROOF/'index.json'); need(idx['commit']==E, 'raw executed SHA')
|
||||
gate=checker()
|
||||
sources={n:v['sha256'] for n,v in gate.runner.source_refs(wt).items()}
|
||||
need(sources==idx['source_map'], 'product/source inventory changed')
|
||||
inputs=gate.input_map(wt); old=idx['inputs']
|
||||
need(set(inputs)==set(old), 'input roster changed')
|
||||
need(all(v==old[n] for n,v in inputs.items() if n!=PLAN), 'non-plan input changed')
|
||||
before=(W/PLAN).read_bytes(); after=(wt/PLAN).read_bytes()
|
||||
a=before.splitlines(keepends=True); b=after.splitlines(keepends=True)
|
||||
need(len(a)==len(b) and a[:2]==b[:2] and a[3:]==b[3:], 'normative plan changed beyond progress line 3')
|
||||
need('現在の閉鎖対象はP08-03。'.encode() in a[2] and '現在の閉鎖対象はP08-03。'.encode() in b[2], 'progress summary format')
|
||||
need(sha(wt/gate.CONTRACT)==idx['marker_contract_sha256'], 'marker changed')
|
||||
deficits=gate.check(W,PROOF); need(deficits==[], 'unchanged original checker failed: '+str(deficits))
|
||||
# Rehash every raw proof member even though unchanged checker also does so.
|
||||
manifest={}
|
||||
for n,pin in idx['artifacts'].items():
|
||||
p=PROOF/n
|
||||
need(not p.is_symlink() and p.resolve().is_relative_to(PROOF.resolve()), 'unsafe proof path')
|
||||
need(p.stat().st_size==pin['bytes'] and sha(p)==pin['sha256'], 'raw proof changed: '+n)
|
||||
manifest[n]=pin
|
||||
need(sha(D/'FULL_REGRESSION_D369D1C_R01_PASS.json')=='1591f0c7fceac1586f044dd3632f6fd286599d921f8da38b7a07971c3d5a2681', 'immutable full receipt manifest')
|
||||
full_pin=load(D/'FULL_REGRESSION_D369D1C_R01_PASS.json')
|
||||
for pin in full_pin['references']:
|
||||
p=R/pin['path']; need(sha(p)==pin['sha256'] and p.stat().st_size==pin['bytes'], 'full receipt changed')
|
||||
f=load(FULL/'runner-input.json'); end=load(FULL/'runner-ended.json')
|
||||
need(f['selected_source_map']==sources, 'full regression source mismatch')
|
||||
need(end['passed'] and end['engine_ended'] and end['actual_suites']==176 and end['strict_accepted_checks']==20488, 'full regression incomplete')
|
||||
need(not any(end[k] for k in ('error','cleanup_errors','guard_errors','missing_marker_paths','remaining_unexecuted_tests','failed_suites')), 'full regression failures')
|
||||
native=load(PROOF/'runner-input.json')
|
||||
need(f['engine']==native['engine'] and f['engine_sha256']==native['engine_sha256']==sha(f['engine']), 'engine changed')
|
||||
# Exact source map and unchanged gate bind fixture, environment subset,
|
||||
# command/configuration, teardown, audio and image request provenance.
|
||||
out=Path(runner.allocation(task_id)['build_dir'])/('integration-applicability-'+final_sha+'-'+kind+'.json')
|
||||
result={'passed':True,'kind':kind,'executed_sha':E,'final_sha':final_sha,'main_base':main_base,
|
||||
'raw_index_sha256':INDEX_SHA,'raw_artifacts':manifest,'source_files_equal':len(sources),
|
||||
'input_map_executed':old,'input_map_final':inputs,'unchanged_checker_deficits':deficits,
|
||||
'plan_executed':before.decode(),'plan_final':after.decode(),
|
||||
'plan_diff':''.join(difflib.unified_diff(before.decode().splitlines(True),after.decode().splitlines(True),fromfile=E,tofile=final_sha)),
|
||||
'plan_only_progress_summary_changed':True,'full_suites':176,'strict_checks':20488,
|
||||
'full_receipt_pins':full_pin['references'],'engine_sha256':f['engine_sha256'],
|
||||
'new_native_runs':0,'new_os_runs':0,'raw_evidence_modified':False,
|
||||
'scope':'P08-03 macOS acceptance only; diagnostic setup; no Windows acceptance'}
|
||||
raw=(json.dumps(result,ensure_ascii=False,indent=2)+'\n').encode()
|
||||
if out.exists(): need(out.read_bytes()==raw,'existing binding changed')
|
||||
else: out.write_bytes(raw)
|
||||
runner.evidence(task_id,kind,final_sha,out,True)
|
||||
runner.event(task_id,'immutable_executed_proof_applicability',{'executed_sha':E,'final_sha':final_sha,'kind':kind,'report':str(out),'sha256':sha(out)})
|
||||
return out
|
||||
|
||||
def install(core):
|
||||
original=core.Runner.verify
|
||||
def verify(runner, task_id, wt, sha_, kind):
|
||||
if runner.config['project']=='the-tree-p08-03-code' and task_id=='P08-03' and kind in ('integration','final'):
|
||||
return bind(runner,task_id,wt,sha_,kind)
|
||||
return original(runner,task_id,wt,sha_,kind)
|
||||
core.Runner.verify=verify
|
||||
@@ -0,0 +1,13 @@
|
||||
// R19 corrected helper template; set each function .app and .root explicitly before a new collector.
|
||||
// Paste into initialized cua_repl; no dynamic evaluation. No input on definition.
|
||||
var evidenceFs = await import("node:fs/promises");
|
||||
var osEvidenceRoot = "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated";
|
||||
var imageDimensions = b=>{var v=new DataView(b.buffer,b.byteOffset,b.byteLength);if(b[0]===137&&b[1]===80)return[v.getUint32(16),v.getUint32(20)];var p=2;while(p+4<b.length){if(b[p++]!==255)throw Error('Image marker');while(b[p]===255)p++;var m=b[p++];if(m===217||m===218)break;var n=v.getUint16(p);if([192,193,194,195,197,198,199,201,202,203,205,206,207].includes(m))return[v.getUint16(p+5),v.getUint16(p+3)];p+=n;}throw Error('Image format');};
|
||||
var calibratedPoint = function coordinate(q,b){var size=imageDimensions(b),scale=size[0]/q.window_size[0],title=size[1]-q.window_size[1]*scale;if(title<0||title>96*q.screen_scale)throw Error('Stale content bounds');var g={window_size:q.window_size,window_position:q.window_position,screenshot_pixels:size,reported_screen_scale:q.screen_scale,backing_scale:scale,titlebar_pixels:title,canvas_stretch:Math.min(q.window_size[0]/1440,q.window_size[1]/810)};if(coordinate.geometry&&JSON.stringify(coordinate.geometry)!==JSON.stringify(g))throw Error('Geometry changed');coordinate.geometry=g;var p=q.screen||q.viewport;return{geometry:g,point:p?[p[0]*g.canvas_stretch*scale,p[1]*g.canvas_stretch*scale+title]:null};};
|
||||
calibratedPoint.geometry = null;
|
||||
var performOsRequest = async function runOs(folder,mode){var requestFolder=runOs.root+'/os-pair/'+folder;var request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));var before=await runOs.app.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);if(c.point&&(c.point[0]<0||c.point[0]>=c.geometry.screenshot_pixels[0]||c.point[1]<c.geometry.titlebar_pixels||c.point[1]>=c.geometry.screenshot_pixels[1]))throw Error('Target outside screenshot; no input or ACK');await evidenceFs.writeFile(requestFolder+'/calibration.json',JSON.stringify(c.geometry));var events=[];if(mode==='click'){await runOs.app.click(c.point);events.push({action:'click',coordinates:c.point,logical_screen:request.screen,world_cell:request.world_cell,calibration:c.geometry});}else if(mode==='wheel'){await runOs.app.scroll(c.point,request.direction||'down',1);events.push({action:'wheel',coordinates:c.point,direction:request.direction||'down',ctrl:false,steps:1,calibration:c.geometry});}else throw Error('Use an explicit real action');await runOs.app.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await runOs.app.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify(events));nodeRepl.write({folder,events});};
|
||||
performOsRequest.root=osEvidenceRoot; performOsRequest.app=godot;
|
||||
var performPaletteReveal = async function reveal(folder){var requestFolder=reveal.root+'/os-pair/'+folder;var request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));if(request.action!=='reveal_palette'||!request.bar.visible)throw Error('No visible bar');var before=await reveal.app.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);var b=request.bar.rect;var v=[request.direction==='left'?b[0]+b[2]/32:b[0]+b[2]*31/32,b[1]+b[3]/2];var m=request.viewport_to_screen;var s=[m[0]*v[0]+m[2]*v[1]+m[4],m[1]*v[0]+m[3]*v[1]+m[5]];var point=[s[0]*c.geometry.canvas_stretch*c.geometry.backing_scale,s[1]*c.geometry.canvas_stretch*c.geometry.backing_scale+c.geometry.titlebar_pixels];if(point[0]<0||point[0]>=c.geometry.screenshot_pixels[0]||point[1]<c.geometry.titlebar_pixels||point[1]>=c.geometry.screenshot_pixels[1])throw Error('Bar outside screenshot');await reveal.app.click(point);await reveal.app.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await reveal.app.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify([{action:'click',coordinates:point,purpose:'normal horizontal scrollbar '+request.direction+' track',bar:request.bar,viewport:v,logical_screen:s,calibration:c.geometry}]));await evidenceFs.writeFile(requestFolder+'/calibration.json',JSON.stringify(c.geometry));nodeRepl.write({folder,direction:request.direction,point,requires_visual_success_before_ACK:true});};
|
||||
performPaletteReveal.root=osEvidenceRoot; performPaletteReveal.app=godot;
|
||||
var progressConstruction = async function progress(folder,resumePoint,pausePoint,cycles){var requestFolder=progress.root+'/os-pair/'+folder;var request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));if(request.action!=='complete_construction')throw Error('Not construction request');var before=await progress.app.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);for(var p of [resumePoint,pausePoint])if(p[0]<0||p[0]>=c.geometry.screenshot_pixels[0]||p[1]<c.geometry.titlebar_pixels||p[1]>=c.geometry.screenshot_pixels[1])throw Error('Speed control outside current screenshot');await progress.app.click(resumePoint);await progress.app.getAXState();for(var i=1;i<=cycles;i++)await evidenceFs.writeFile(requestFolder+'/construction-progress-'+i+'.png',await progress.app.getScreenshot({emit:false}));await progress.app.click(pausePoint);await progress.app.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await progress.app.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify([{action:'click',coordinates:resumePoint,purpose:'normal x3 resume',calibration:c.geometry},{action:'observe',screenshots:cycles,purpose:'normal construction progress',required_minutes:request.minutes},{action:'click',coordinates:pausePoint,purpose:'normal pause'}]));nodeRepl.write({folder,required_minutes:request.minutes,requires_visible_completion_before_ACK:true});};
|
||||
progressConstruction.root=osEvidenceRoot; progressConstruction.app=godot;
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// Paste into initialized cua_repl; no dynamic evaluation. No input on definition.
|
||||
var evidenceFs = await import("node:fs/promises");
|
||||
var osEvidenceRoot = "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r18-calibrated";
|
||||
var imageDimensions = b=>{var v=new DataView(b.buffer,b.byteOffset,b.byteLength);if(b[0]===137&&b[1]===80)return[v.getUint32(16),v.getUint32(20)];var p=2;while(p+4<b.length){if(b[p++]!==255)throw Error('Image marker');while(b[p]===255)p++;var m=b[p++];if(m===217||m===218)break;var n=v.getUint16(p);if([192,193,194,195,197,198,199,201,202,203,205,206,207].includes(m))return[v.getUint16(p+5),v.getUint16(p+3)];p+=n;}throw Error('Image format');};
|
||||
var calibratedPoint = function coordinate(q,b){var size=imageDimensions(b),scale=size[0]/q.window_size[0],title=size[1]-q.window_size[1]*scale;if(title<0||title>96*q.screen_scale)throw Error('Stale content bounds');var g={window_size:q.window_size,window_position:q.window_position,screenshot_pixels:size,reported_screen_scale:q.screen_scale,backing_scale:scale,titlebar_pixels:title,canvas_stretch:Math.min(q.window_size[0]/1440,q.window_size[1]/810)};if(coordinate.geometry&&JSON.stringify(coordinate.geometry)!==JSON.stringify(g))throw Error('Geometry changed');coordinate.geometry=g;var p=q.screen||q.viewport;return{geometry:g,point:p?[p[0]*g.canvas_stretch*scale,p[1]*g.canvas_stretch*scale+title]:null};};
|
||||
calibratedPoint.geometry = null;
|
||||
var performOsRequest = async function(folder,mode){requestFolder=osEvidenceRoot+'/os-pair/'+folder;request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));var before=await godot.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);if(c.point&&(c.point[0]<0||c.point[0]>=c.geometry.screenshot_pixels[0]||c.point[1]<c.geometry.titlebar_pixels||c.point[1]>=c.geometry.screenshot_pixels[1]))throw Error('Target outside screenshot; no input or ACK');await evidenceFs.writeFile(requestFolder+'/calibration.json',JSON.stringify(c.geometry));var events=[];if(mode==='click'){await godot.click(c.point);events.push({action:'click',coordinates:c.point,logical_screen:request.screen,world_cell:request.world_cell,calibration:c.geometry});}else if(mode==='wheel'){await godot.scroll(c.point,request.direction||'down',1);events.push({action:'wheel',coordinates:c.point,direction:request.direction||'down',ctrl:false,steps:1,calibration:c.geometry});}else throw Error('Use an explicit real action');await godot.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await godot.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify(events));nodeRepl.write({folder,events});};
|
||||
var performPaletteReveal = async function(folder){requestFolder=osEvidenceRoot+'/os-pair/'+folder;request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));if(request.action!=='reveal_palette'||!request.bar.visible)throw Error('No visible bar');var before=await godot.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);var b=request.bar.rect;var v=[request.direction==='left'?b[0]+b[2]/32:b[0]+b[2]*31/32,b[1]+b[3]/2];var m=request.viewport_to_screen;var s=[m[0]*v[0]+m[2]*v[1]+m[4],m[1]*v[0]+m[3]*v[1]+m[5]];var point=[s[0]*c.geometry.canvas_stretch*c.geometry.backing_scale,s[1]*c.geometry.canvas_stretch*c.geometry.backing_scale+c.geometry.titlebar_pixels];if(point[0]<0||point[0]>=c.geometry.screenshot_pixels[0]||point[1]<c.geometry.titlebar_pixels||point[1]>=c.geometry.screenshot_pixels[1])throw Error('Bar outside screenshot');await godot.click(point);await godot.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await godot.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify([{action:'click',coordinates:point,purpose:'normal horizontal scrollbar '+request.direction+' track',bar:request.bar,viewport:v,logical_screen:s,calibration:c.geometry}]));await evidenceFs.writeFile(requestFolder+'/calibration.json',JSON.stringify(c.geometry));nodeRepl.write({folder,direction:request.direction,point,requires_visual_success_before_ACK:true});};
|
||||
var progressConstruction = async function(folder,resumePoint,pausePoint,cycles){requestFolder=osEvidenceRoot+'/os-pair/'+folder;request=JSON.parse(await evidenceFs.readFile(requestFolder+'/request.json','utf8'));if(request.action!=='complete_construction')throw Error('Not construction request');var before=await godot.getScreenshot({emit:false});await evidenceFs.writeFile(requestFolder+'/screen-before.png',before);var c=calibratedPoint(request,before);for(var p of [resumePoint,pausePoint])if(p[0]<0||p[0]>=c.geometry.screenshot_pixels[0]||p[1]<c.geometry.titlebar_pixels||p[1]>=c.geometry.screenshot_pixels[1])throw Error('Speed control outside current screenshot');await godot.click(resumePoint);await godot.getAXState();for(var i=1;i<=cycles;i++)await evidenceFs.writeFile(requestFolder+'/construction-progress-'+i+'.png',await godot.getScreenshot({emit:false}));await godot.click(pausePoint);await godot.getAXState();await evidenceFs.writeFile(requestFolder+'/screen-after.png',await godot.getScreenshot());await evidenceFs.writeFile(requestFolder+'/cua-actions.json',JSON.stringify([{action:'click',coordinates:resumePoint,purpose:'normal x3 resume',calibration:c.geometry},{action:'observe',screenshots:cycles,purpose:'normal construction progress',required_minutes:request.minutes},{action:'click',coordinates:pausePoint,purpose:'normal pause'}]));nodeRepl.write({folder,required_minutes:request.minutes,requires_visible_completion_before_ACK:true});};
|
||||
+232
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"full_run": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p08-03-final-regression-d369d1c-r01",
|
||||
"ended_sha256": "0dbe71e589113088bd37be42fef583b8f6da86a15542f4900ed97fa957fc1264",
|
||||
"all_owned_ended": true,
|
||||
"paths": [
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-00227a9be3184f51890978ad57ddbcbe-standard-runtime-125",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-026f523829474674accf2f4671c364b2-standard-startup-121",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-02f2e54c601b4e93adb8dfbb92899867-standard-startup-060",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-050662a571504bdbab35b323bf2bdb15-standard-startup-001",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-050ad21a99bd49ef85406b3393ed91e9-standard-startup-090",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-056f0bfd1a844a02b07ba3bd7a01e0aa-standard-startup-099",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0715ea4e8aa648e78f0c8ef12d10c9e4-standard-startup-035",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-07392cfbeb85464e8a74e18729725e5b-standard-startup-136",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-07ffb4a657c342178e2ee49f200dc5c4-standard-startup-053",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-082516d8d33244b6a70a9306955de875-standard-startup-043",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0857bca823434a90ae1af156e35d0f17-standard-startup-094",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0b17fbd7cfde4ef296108123f5307cdb-standard-startup-169",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0c1c63ac80eb4e7e98b456631099ece2-standard-startup-006",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0c5786db0c67420da3aa80f2c79efc7e-standard-startup-033",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0cabefbd5fc94aa4a7e37167294f0867-standard-startup-112",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0cebd439404d4111a57a24bb162d8b47-standard-startup-057",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0d251f4516ad4069a5197d937f4bb5de-standard-startup-168",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0d8e813a1e0d4ccf94ad9b9c11d29300-standard-startup-025",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0eea7ee43d3f42ad874ac55cbb71ae68-standard-startup-133",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-0f4b520487464294bfae456b483e211f-standard-startup-038",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-11500a01239c41059d5dab9d6c24c7a8-standard-startup-122",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-12600c62a3c140ef87a18a5707a3a655-standard-startup-parse",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-126ae63f60c54385988a4de7903e656a-standard-runtime-008",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1277f1507aae4584a13c011c2a1796c4-standard-startup-026",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-139de2aacd87431b8456e3623a31377b-standard-startup-175",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-14d275aa943a47af9b335eaacdce0536-standard-startup-067",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-14fa6e23324f4566a36943146452335b-standard-runtime-131",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1540de4af44a4c7d84125ace32c9230d-standard-startup-import",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-15af510d64e84ecc80f113e17d4d3695-standard-startup-123",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1617d16df9864d4aa8afee13d211785b-standard-runtime-170",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-17142d97a095488a83b3443c85918346-standard-startup-059",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-18237c11212848ab87da6a12e455bb1d-standard-startup-079",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1ad0af972c524095bc7e58321ed724c3-standard-startup-014",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1b90840549c445a585425d2644a82a60-standard-runtime-168",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1ce8a1b58c1f4e6b9b25f3bd979e7f0f-standard-startup-130",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1ec7311cc7f04244a27f3ce52a37a8b9-standard-runtime-110",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1ed21a1675374327bdf82e863dd24802-standard-startup-030",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1ffa058fa0894b1e988385ec024a03b2-standard-startup-089",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2081f76d937846a9916cca6fdb74d0d9-standard-runtime-148",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-21f4185bbf474583877b97f3841afc07-standard-startup-004",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-226f1cf15d1143b4b3fb828e9232c2ee-standard-startup-146",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-22a791ac0a5b4e43a8444950a4a01423-standard-startup-013",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-23b39439a82d4ae989e0e9183d51cdd1-standard-runtime-133",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2532149c83154d88acdcf727b3a61b17-standard-startup-047",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-26615507fa904f5ab88b75c6d28c47c1-standard-startup-174",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-27419215a8a04c5e90a91e247137e3a8-standard-startup-050",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-279b83b6584e4fbb991d01ee338c63f0-standard-startup-085",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-27cd07b50dd8431e92b8f556d8fe1215-standard-startup-055",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-29d39c30328849fda092c42ba3aa0093-standard-startup-046",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2b0b1f2faa174464a8320653c92a517c-standard-startup-032",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2c9f1390d9e642dda40aeeced3c10fac-standard-startup-147",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2d731cfe91f34ad1a8c53835a34b1469-standard-startup-150",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-2f41614b742544cb82175096e626213f-standard-startup-039",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-315c939824d84530bb4b8916500f4046-standard-runtime-002",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-3209ce29223344d489c0b0cfeaff0605-standard-startup-158",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-336fcca67f264090b8387b7a3ee387b9-standard-startup-058",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-34156ad15e41463ebce9ee67e8503d56-standard-startup-118",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-34a9b69b3a5d4bc6afb0951739a2c248-standard-startup-116",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-34ba733e8f4440f6adf570a6ba7ee36d-standard-startup-119",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-369969277b454daf8f1f29c9cb22b2ce-standard-startup-093",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-36e9bfd04b0c424c9bf62e0afbbc6565-standard-startup-129",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-37bf9cd83aa64059a6b6aab3f8588f52-standard-startup-071",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-38c9d1f9c91640019d1d29f7791a1327-standard-startup-097",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-3a275c5633574acdaafa8c7015e0817d-standard-startup-044",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-3a4f6617c7314283999c25a48b13cbc4-standard-startup-086",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-3f44558be7ae4ac086c794e2b3d959e0-standard-startup-125",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-3fac1adaa7e14f68b6593b72033d65b9-standard-startup-166",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-40d21849b4a64c1baa93701bdf9eade5-standard-startup-076",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-40d21dcdd72c4910a9f58b8db4a60450-standard-startup-115",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41112373c775447dbd008791fe8c0107-standard-startup-034",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41f4c67054c044f682571429c1d3610f-standard-startup-120",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41febab2061c41f4ab9cd10753bce0e8-standard-startup-092",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-423d18458cb24db494d0afc2fe363226-standard-startup-027",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-433df3fd112b45158eee5a39e79715ec-standard-runtime-057",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-433e93a9deb6439d9553cd09666c5959-standard-startup-037",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-440d762e4bee4ba398e04065fe482dee-standard-startup-015",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-44864de17c7a458993b5d9143b110e89-standard-startup-078",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-448a4c7ab73e4bc38292c9ca11ed8de7-standard-runtime-164",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-456850e4d78f47fd83d44ea4af2acbbc-standard-startup-080",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-45feb181437f433093793b9f50d5e39d-standard-runtime-106",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-46d90fb31dd14e7586a84442877aeeae-standard-runtime-052",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4792449485174d3b9b3f66fb44b5de96-standard-startup-065",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-48487d7e574a47b0a1bcc49a82ea40cf-standard-runtime-150",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4af341dca72b407b91501547a788f60c-standard-runtime-167",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4e3d711cb66b4af4b521a725181bd2dc-standard-startup-100",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4e5b127d4d9748d1945208ad45c7e38f-standard-startup-081",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-56e5f5e06cb24dd2b2bf6c133a079545-standard-runtime-113",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-5a65f708bae444e2afeb4fc4545482a5-standard-runtime-159",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-5b7cb4dd3ab645adad373321eb8034b4-standard-startup-075",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-5b841ba80de0448f8793bec3ab1c7639-standard-runtime-138",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-5f5bcd36dce24c7bb75777219a3c67d4-standard-startup-095",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-5fc20d36a4314a6b831459a0b4d9c01f-standard-startup-159",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6098fe7e5ac943d3b9de05753b20461f-standard-runtime-152",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-628135ff89d54a389379027118ff7c79-standard-startup-051",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-645e52bf2a304a039372cdcd196006d5-standard-startup-061",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-64c13c6274bd41348f07734d5685df3a-standard-startup-005",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-64eaa3950a944a4aa52de101edc3fdd0-standard-startup-017",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6527357e94894b6ea393027cfe8f1e95-standard-runtime-000",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-655028aea1a346e48e212241ed455511-standard-startup-042",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-65d8fc7bf2514af5955415ab2d3832c4-standard-startup-167",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-674b09dd5a29404ca2a70bbef716c4af-standard-startup-077",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6792b0bc887b41dd8fc60bcc73151c9d-standard-startup-101",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-68afa8fd0786475a9f96a8ca4c6d9d94-standard-startup-073",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6a1c706417534a9bab8c9d5e921bb6ab-standard-startup-163",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6a8deeba320a46b2a49c9cbcce1590f4-standard-startup-048",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6c15c6cf7d4448a7bd1f3c7f8f7e7b48-standard-startup-126",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6d397296d32a4f42837d8470f9abf857-standard-startup-157",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6e691ee1119f484fb184b98b94f81576-standard-startup-016",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6ec3779d03714277b6092e822b3ccbfa-standard-runtime-022",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6ee8f56005a64b76a9ea622fb1a8953b-standard-runtime-139",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-6f37f629ed2f4a89bd4397bd3e638bb5-standard-startup-155",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-708d8a805ff0410f9134da4aea58409b-standard-startup-164",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-71a42ce2a41343ef9bea093fc19a0f1b-standard-startup-161",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-723f86b033684027b81b06ff6c54bb0e-standard-startup-139",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-72fe93949e3542ec811da1bc77bb5f15-standard-startup-088",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-7378658cc160445ea46db35c117f4fb1-standard-runtime-117",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-74bbba85a4da4bc0bca2e858c8c10b8a-standard-startup-165",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-75d36f870f444bc2b736826b64820842-standard-runtime-115",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-75d73426d0df46bbbf95d1b7a2fd7ce5-standard-startup-132",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-76ddb4a616964a4db84257fe3981d6b2-standard-runtime-140",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-79bd3f58c531476eaeb497d52d206cf4-standard-startup-063",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-7c656ec030d04bbdb8489949d2611606-standard-startup-023",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-7c86d04eba884e419e2f15b1e664977f-standard-startup-138",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-7f0c0eaa0966468c8f458914e4ab0e85-standard-startup-128",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8009d5bd1f5e47d6a18cc41de9df6ae0-standard-runtime-060",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8066132b4c6544b0a68e80e8d0edcc92-standard-runtime-153",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-81bf6da0073f4ae1b160664b9494ced4-standard-startup-036",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-826e568155e64011bb030a2f2c2d1a34-standard-startup-031",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8336d1a251624f69bd7c206c90cc1d75-standard-startup-114",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-83e7c7f5b5a0478cb57d6a62fd06b83f-standard-startup-137",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-844f73eb5434450c8377dffc1c49a9bf-standard-runtime-165",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-850e99e53ff84d3c9b2ebe865ec9de38-standard-runtime-132",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8702fcc1da724aa397b9c6d787d92517-standard-startup-143",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-88c27cc1a81e4d71b3c32c4c835ad3ce-standard-startup-070",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-890942e8fbe147a59269beb807e05aa2-standard-startup-106",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8928b8ef172c4f5980fe1141c62949d0-standard-startup-082",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8a350ec4fdc14aa6bed05c7b941e25c1-standard-startup-124",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-8b7ee2dbd1a8464bbe35cf42bb2b7790-standard-startup-105",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9724a0e9e4d44f91a45d6447704929b9-standard-startup-041",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9833f2a83b3c478094b9673808fc4298-standard-runtime-155",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9918fb55f0f545f0a8bb1e55670d6532-standard-startup-072",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9a48727bab094f4784e5c37d119c29fe-standard-startup-056",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9c6d679a04684f989e5ae86792270cae-standard-startup-109",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-9d286eee19a040f49bb586afb34321db-standard-startup-011",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-a275d378516242a99483fc084f36a57c-standard-startup-131",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-a53a5a1a30074dda8a4454eb63830826-standard-startup-024",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-a6de5210ae91435bb40d800ad446b1f8-standard-runtime-157",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-a99cede547e44819894e90919ac3c508-standard-startup-022",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-aae29d300d8e434d9b53deec45863b5c-standard-startup-151",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-aca52df4f4a34164a238bfb0cb3eece3-standard-startup-170",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ada8b8ffd38742c4a0245b7c47c44978-standard-runtime-166",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ae0e51066c144c32b1a6d0f54591e577-standard-startup-002",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-aec94abfe84d4703a41378c8acad9b62-standard-startup-156",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-aecab3a24676425bbd6dc34012f95a8e-standard-startup-000",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-af5d02aae70449729f72966ef8b86bdb-standard-startup-107",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b12ddd079b6540e8957d22c060fc2736-standard-runtime-118",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b149c3fa6a644dd09fadd09bcc8e56e0-standard-startup-019",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b60ca0b8dc444860af7240f381840b94-standard-startup-040",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b702a58390924e17a466288c5dab5277-standard-runtime-003",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b9349223e3594d778b2e50287a5a9740-standard-runtime-101",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b99b9ba73eb744a2862c85a11ca59b52-standard-runtime-147",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-b9f6901d70304ba4adec31ef42c47a7e-standard-startup-054",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-bbef7d93c1244420b86a07193942d865-standard-startup-111",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-bbfc7c9edfa54eefbdbf94b93fb8cde0-standard-startup-134",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-bd31680d90254ffc9d5a393dcf39354f-standard-runtime-099",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-bd82db358dd849c7aa49e9e0697ccf90-standard-runtime-049",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-bda2eafbcaef42ab8213fe1b0398d400-standard-runtime-030",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-be042dd6cfc04108ac9e36a8dfb8d582-standard-runtime-065",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-be8e851d245e4c4c9eaca298d31f51a0-standard-startup-028",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c02977befa47467b84d01d65a8f5d618-standard-startup-069",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c047e5b9fd95455a84833793d71110bb-standard-startup-018",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c123d9c4de564e46a7bf60a72b805c5c-standard-startup-145",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c1c5f8ff69d44c4c817a25deb4d72c55-standard-startup-162",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c409ad78a789468d91ad9f83b68fa0b5-standard-startup-003",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c431550eda714b34b94d0fd7657d210e-standard-startup-091",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c6304873b7f84c6b8a35514188e625ac-standard-startup-045",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c805f555558045dcaa8e89b6e461800f-standard-startup-110",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c81e0b2605e449a19c12ffaffd384d48-standard-startup-149",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-caa2a668559f4e6396861614855c96cb-standard-startup-009",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-cacfdcd1a4f842d99e8723b5644e49c0-standard-startup-087",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-cdd6fe7a9f4c439e87249a8068379005-standard-startup-012",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ce3b5db4ada249c3ad26996ddc35ee05-standard-startup-173",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ced312bd52a14849acfae861f3637962-standard-startup-098",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-cf48cc8838464595bcc0da3cd9ca9560-standard-runtime-103",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d02248a071774e81a8594973a29b2012-standard-startup-068",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d0dd944881d3452ba2f25c9423a9fbf6-standard-startup-117",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d32cdca0759a4ea2b0caa7bc64b53caa-standard-startup-062",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d382e9c8e34f4d78b4e24b1425ccea21-standard-runtime-134",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d414ad8900b54ee79befbd6819a623c1-standard-startup-102",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d436f3d784d54fe5a9d43d69893663b7-standard-startup-096",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d46ece17adaf420c9aea35186c71fb0e-standard-startup-144",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d5a24f7817e5473f93e739b9dc71eefc-standard-startup-007",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d8a0ea02be264e7bac33df30980bcf7c-standard-startup-113",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d8b1a0d273d14796977c13bfb3c86488-standard-startup-029",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d8be5a0209e546d89929594dd750429f-standard-startup-171",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-d9ad2584cefa4b5692d14f9f3028fdf9-standard-startup-008",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-dc25e2590b4e46bb9ae6993ba2ba112c-standard-runtime-102",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-dc3e59a7f6184286a4369782753ec8ce-standard-startup-172",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-dd53e9bbd51b45d792de46f727316fa0-standard-startup-021",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e116386b86f74adca3eaa83355332644-standard-startup-148",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e14e6261182a40b6aa767888eceeb3e0-standard-runtime-114",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e162da15b4904fdca02b340bd484300f-standard-startup-154",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e305269fdd7b48849d65096ab86cc113-standard-startup-160",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e4dae68b81ea47679863d2d372f24bb5-standard-startup-104",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e9e965d664664c709471c3ff390515f7-standard-startup-052",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ea1d478dbe864b9292120a231cf42a3f-standard-startup-020",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ea4a782e10ca4d0db1169e4a881a940a-standard-startup-066",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ea6c4956839845ef9c56cbeddd45657d-standard-startup-010",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-eab6f105921941ebbcc9955d68ef48f2-standard-startup-142",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ecfc02b602184c1e8ad5fa823b835c0a-standard-startup-103",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ed970d2ae1904fc5b37ffa80aa1394f3-standard-startup-064",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ee682995cfb24eebbb075f8a26cc8fb5-standard-startup-108",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-ef37a6f6795a4ea7a3e7bbf658ccc2ce-standard-startup-141",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f1929c459b274912a24f67da972803f1-standard-runtime-142",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f491697fcc234ffc9950b6a6235d8cd5-standard-startup-153",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f64133ec895b467c8716f34b8af552eb-standard-startup-140",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f70085b161a2434581ba76f984326d65-standard-startup-083",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f912d27a2072446abaf3ffc4ab569940-standard-startup-152",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f9b4176c2fcc4982be91d30ea8f7d169-standard-startup-084",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-f9bba25e40684e8e89913539307a6859-standard-startup-135",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-fba87260a123482fba925e5721491883-standard-startup-074",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-fbde7422603a40a09109d701cbc14c6b-standard-startup-049",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-fd5b352c884b4d449ddeacafa11074c7-standard-startup-127",
|
||||
"/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-feaea3f502ea4d73be43bf98edc9f2fb-standard-runtime-160"
|
||||
],
|
||||
"selection": "Only startup and actual runtime profiles bound by completed full-regression phase receipts; not time-based ownership inference."
|
||||
}
|
||||
BIN
Binary file not shown.
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"candidate_files": 2865,
|
||||
"compressed_files": 2817,
|
||||
"errors": [],
|
||||
"logical_bytes_preserved": 1938863968,
|
||||
"allocated_before_sum": 1944100864,
|
||||
"allocated_after_sum": 156975104,
|
||||
"free_before_bytes": 3403890688,
|
||||
"free_after_bytes": 5191794688,
|
||||
"elapsed_seconds": 56.84520483016968,
|
||||
"method": "Transparent APFS compression only for phase-bound closed owned profiles; identical paths/bytes/mtime; SHA checked original/compressed/original-before-replacement/final; no user save, source, active file or raw proof deletion.",
|
||||
"measurement_limit": "Net volume free change is measured; per-file block sums are not APFS-exclusive allocation."
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
import pathlib,json,subprocess,hashlib,os,time,shutil,tempfile,gzip
|
||||
R=pathlib.Path("/Users/korizatou114/Projects/とりにく工房ゲーム制作部")
|
||||
O=R/"docs/plans/original-completion-2026-10-02/execution/storage-20261015"
|
||||
m=json.loads((O/"CLOSED_FULL_D369_PROFILE_MANIFEST.json").read_text())
|
||||
def sha(p):
|
||||
h=hashlib.sha256()
|
||||
with p.open("rb") as f:
|
||||
for b in iter(lambda:f.read(1048576),b""):h.update(b)
|
||||
return h.hexdigest()
|
||||
assert sha(pathlib.Path(m["full_run"])/"runner-ended.json")==m["ended_sha256"] and m["all_owned_ended"]
|
||||
assert not subprocess.run(["pgrep","-f","^/Applications/Godot.app/Contents/MacOS/Godot"],capture_output=True).stdout.strip(), "no live Godot during profile compression"
|
||||
opened={s[1:] for s in subprocess.run(["lsof","-n","-F","n"],capture_output=True,text=True).stdout.splitlines() if s.startswith("n/")}
|
||||
start=time.time();free=shutil.disk_usage(R).free;candidates=[];errors=[];rows=[]
|
||||
for root in map(pathlib.Path,m["paths"]):
|
||||
assert root.parent==pathlib.Path("/Users/korizatou114/Library/Application Support") and root.name.startswith("TheTree-PCK-tests-") and not root.is_symlink()
|
||||
for p in root.rglob("*"):
|
||||
if p.is_symlink() or not p.is_file() or str(p) in opened:continue
|
||||
s=p.stat()
|
||||
if s.st_size>=16384 and s.st_nlink==1 and s.st_blocks*512>=s.st_size*.5:candidates.append(p)
|
||||
print(json.dumps({"candidate_files":len(candidates),"logical_bytes":sum(p.stat().st_size for p in candidates),"free_before":free}),flush=True)
|
||||
with gzip.open(O/"CLOSED_FULL_PROFILE_COMPRESSION_FILES.jsonl.gz","wt") as log:
|
||||
cursor=0
|
||||
while cursor<len(candidates):
|
||||
with tempfile.TemporaryDirectory(prefix="tree-closed-profile-compress-",dir="/private/tmp") as tmp:
|
||||
inp=pathlib.Path(tmp)/"input";out=pathlib.Path(tmp)/"compressed";inp.mkdir();batch=[];size=0
|
||||
while cursor<len(candidates) and len(batch)<256 and size<128*1024*1024:
|
||||
p=candidates[cursor];cursor+=1;s=p.stat();digest=sha(p);name=str(len(batch));os.link(p,inp/name);batch.append((p,s,digest,name));size+=s.st_size
|
||||
subprocess.run(["ditto","--hfsCompression",str(inp),str(out)],check=True,capture_output=True)
|
||||
for p,s,digest,name in batch:
|
||||
t=out/name
|
||||
try:
|
||||
now=p.stat()
|
||||
assert sha(t)==digest and now.st_mtime_ns==s.st_mtime_ns and now.st_size==s.st_size and sha(p)==digest,"byte/source guard"
|
||||
if t.stat().st_blocks*512>=s.st_blocks*512*.9:continue
|
||||
os.replace(t,p);assert sha(p)==digest and p.stat().st_mtime_ns==s.st_mtime_ns,"final SHA/mtime guard"
|
||||
row={"path":str(p),"bytes":s.st_size,"sha256":digest,"allocated_before":s.st_blocks*512,"allocated_after":p.stat().st_blocks*512,"mtime_ns":s.st_mtime_ns,"content_verified":True};rows.append(row);log.write(json.dumps(row)+"\n")
|
||||
except Exception as e:errors.append({"path":str(p),"error":str(e)})
|
||||
print(json.dumps({"processed":cursor,"compressed":len(rows),"free_GiB":round(shutil.disk_usage(R).free/2**30,2),"elapsed_s":round(time.time()-start)}),flush=True)
|
||||
result={"candidate_files":len(candidates),"compressed_files":len(rows),"errors":errors,"logical_bytes_preserved":sum(x["bytes"]for x in rows),"allocated_before_sum":sum(x["allocated_before"]for x in rows),"allocated_after_sum":sum(x["allocated_after"]for x in rows),"free_before_bytes":free,"free_after_bytes":shutil.disk_usage(R).free,"elapsed_seconds":time.time()-start,"method":"Transparent APFS compression only for phase-bound closed owned profiles; identical paths/bytes/mtime; SHA checked original/compressed/original-before-replacement/final; no user save, source, active file or raw proof deletion.","measurement_limit":"Net volume free change is measured; per-file block sums are not APFS-exclusive allocation."}
|
||||
(O/"CLOSED_FULL_PROFILE_COMPRESSION_RESULT.json").write_text(json.dumps(result,indent=2)+"\n");print(json.dumps(result),flush=True)
|
||||
@@ -223,7 +223,7 @@
|
||||
"ASSETS_PLATFORM_AUDIT.md": "a3a4b8ca0fb39a9abf88692285d26aa879815e092352ba304ef2758e71da50bd",
|
||||
"ATOMIC_REGISTER.md": "6070143b85b7c3b9b73d7c9768d88d2dae4d20407ad54a563cb6ffd74f2373ae",
|
||||
"ATOMIC_SEMANTIC_REVIEW.md": "c156b1fb57c2b4a900f27a19049510f3e9616e723d5edb3417f50d733de5be48",
|
||||
"IMPLEMENTATION_PLAN.md": "40c17b52ef62bfde2ef422f9ceefc7b0a1521f33015a81bcd8e89003a674938d",
|
||||
"IMPLEMENTATION_PLAN.md": "40121b3deec945933e3fb516936ce64903769c4d070dc30d9f3a2d3719c05ea3",
|
||||
"IMPORT_UNICODE_AUDIT.md": "88b2382bfbb3411fece8be7e6004ba21d8bf6a47e9d1f3cf573ea6638f79c12f",
|
||||
"P09_VALUE_CONTRACTS.md": "c5abdc4543e54033b1fcfd0943cba266f664d8c10968965fd36ade40da488a25",
|
||||
"PERFORMANCE_AUDIT.md": "c75e806acf825fc4a61f773a2cce7e71be335a1e25dbb15d98091097e8dc47c1",
|
||||
@@ -254,6 +254,6 @@
|
||||
"validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e",
|
||||
"validate_plan.py": "23678227d9b3c556f1bd903f4b5b3147c4a82ce5085e10055481026803451b80",
|
||||
"validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27",
|
||||
"work_packages.json": "fae076c65aa2b009872675b39f5168a43a90228f38a4783461b1d1aae92fae5d"
|
||||
"work_packages.json": "b45440bf1671dce50922879bf26dfbd2ecb1975b939cf64575d915acf3404559"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6981,16 +6981,33 @@
|
||||
"sha256": "24376658d7166ebf96d1fab7bea2945400cc2f3a248ec361e0a7a879073c4c70",
|
||||
"scope": "d369d1c Root153 plus native4 and actual fresh routing to mandatory absent OS; no formal acceptance",
|
||||
"current_game_acceptance_inferred": false
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/CURRENT_D369_OS_AND_REGISTERED_PASS.json",
|
||||
"sha256": "69d3f3d6835c9e0abef11d3f801433b3dc8ec57f787fbd9bce32059a2937da2b",
|
||||
"scope": "d369 continuous OS, registered validation, independent Opus review PASS; integration/final pending",
|
||||
"current_game_acceptance_inferred": false
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/FULL_REGRESSION_D369D1C_R01_PASS.json",
|
||||
"sha256": "1591f0c7fceac1586f044dd3632f6fd286599d921f8da38b7a07971c3d5a2681",
|
||||
"scope": "actual exact d369 full176/20488 PASS; original unit not yet closed",
|
||||
"current_game_acceptance_inferred": false
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/INDEPENDENT_REVIEW_D369D1C.json",
|
||||
"sha256": "560050d8c031a9cfd6de3c458f9d97c9fb92d55248376b36571e75bc89a88435",
|
||||
"scope": "actual independent Opus5.5 PASS all5; integration/final pending",
|
||||
"current_game_acceptance_inferred": false
|
||||
}
|
||||
],
|
||||
"progress_summary": "2026-10-15 現在の閉鎖対象はP08-03。正式11/着手25/予定52、原30パッケージ/88成果単位と部分点なしを維持する。修正20の提出d369d1c399f7506bdb8d980b642ad0da216d14f4(実Opus 5.5指示/同一6.1-sol担当)を凍結。修正19の受動fixture可視性・終端制御を保持し、R09履歴の存在による新版誤振分けと実PNG/JPEGの検証経路をchecker/試験/文書だけで修正。Root局所153件全PASS、Python構文PASS、標準import・313構文・native writer196/別PID reader96もPASS、全所有終了・保護/終了エラー0。実nativeをcheckerへ渡し現行版経路が未収集OS証跡要求(line907)まで通ることを確認。正確な新版の全176回帰を1回実行中。f5版全回帰は誤振分け発見時にphase013で制御終了し、旧fd643全回帰も新版転用なし。通常パレット左右移動と受付選択は短いOS診断で成立。原P08-03は連続通常OS全5条件・別PID再開、全回帰完結、独立Opusレビュー、統合最終確認と台帳閉鎖が未達、正式加点0。R15の未成立reveal31は未受入履歴でMacロックと区別する。重複実装なし。共有Runtime支援dbf5cb8の原88加点0。個別上限は撤廃済み、以下の古い上限・承認待ちは履歴であり停止理由ではない。",
|
||||
"progress_summary": "2026-10-15 現在の閉鎖対象はP08-03。正式11/着手25/予定52、原30パッケージ/88成果単位と部分点なしを維持する。凍結提出d369d1c399f7506bdb8d980b642ad0da216d14f4(実Opus 5.5指示/同一6.1-sol担当)はRoot局所153件・Python構文・313 Godot構文・native writer196/別PID reader96・全176回帰20,488厳密チェックPASS。R19の通常OS writer21643(58要求)/reader32505(4要求)は連続全5条件・正式保存再開まで終了0、保護/終了エラー0。原証跡923項目の整合性検査は不足0、登録済みRunner検証PASS、別Opus 5.5セッションad6828d3で独立レビューPASS(重大指摘0、軽微2件は後続記録)。最初の実画像記録先誤りは同一バイト対応表と完全呼出traceで開示し、旧R18該当画像は受入転用しない。全回帰後の終了済み試験プロファイル2,817ファイルはSHA/mtime/パス保持圧縮、実空き約1.79GB回収。実行版と統合版の厳密適用性・統合最終確認・正式台帳閉鎖が未達で加点0。f5中断回帰と旧fd643全回帰は新版へ転用しない。R18は約5時間の処理間隔中に要求2が期限超過した不完全履歴。重複実装なし。共有Runtime支援dbf5cb8の原88加点0。個別上限撤廃済み、以下の古い上限・承認待ちは履歴であり停止理由ではない。",
|
||||
"remaining_gaps": [
|
||||
"凍結d369d1cの必須全176回帰を完結し、終了/ソース/保存保全を確認する。途中で止めたf5や旧fd643の完了扱い転用なし。",
|
||||
"新版fixtureの実バー位置から通常横スクロールを行い、可視成功確認後にACKする。全5条件の連続OS writer/別PID readerを取得しcheckerを通す。過去の断片合成なし。",
|
||||
"全5条件の独立Opusレビュー、統合・最終検証、台帳閉鎖。現在native/localの合格だけでは正式加点しない。",
|
||||
"同一Windows配布版の実機受入と延期済みP23保持ジェスチャーは別の全体残件。"
|
||||
"実行SHA d369d1cと統合SHAを分け、全1330実行ソース・実入力・engine・markerの一致と進捗要約1段落だけの計画書差分を厳密に確認する。原証跡を書き換えず新sidecarで結ぶ。",
|
||||
"統合・現行最終確認・正式台帳反映まで閉じる。新たな実質変更がない限り全回帰やOSを重複実行しない。",
|
||||
"同一Windows配布版実機受入と延期済みP23保持ジェスチャーは別の全体残件。"
|
||||
],
|
||||
"updated_at_jst": "2026-10-15T00:17:32.541899+09:00"
|
||||
"updated_at_jst": "2026-10-15T07:32:21.941986+09:00"
|
||||
}
|
||||
],
|
||||
"estimate_person_days_historical_2026_09_29": [
|
||||
|
||||
Reference in New Issue
Block a user