mandelbrot/COMPLETION_AUDIT.md
2026-08-22 20:55:27 +09:00

7.6 KiB
Raw Blame History

Mandelbrot Deep Zoom v23 完了監査

判定

IMPROVEMENT_PROPOSAL.mdのうち、計測結果に依存しないPhase 0〜3Aの実装項目はコード、build、非ブラウザ試験へ反映した。source/ABI/数値/pixel mapping/WASM Module clone/配布物のgateは合格している。

ただし、固定実機を必要とするbrowser acceptanceは実行環境にin-app Browserが存在しないため未実施である。性能修正後に再開した接続監査でも3回連続のgoal turnで利用可能Browser 0件となり、2026-08-22T10:48:56.1197927Zに外部状態待ちのblockerとして再確定した。Node固定sceneではdeep BLAの高いMPPを確認し、標準deepを約1.4秒の実測時間予算へ変更済みだが、これはCanvas、Worker、入力、downloadを含むbrowser gateの代替ではない。またPhase 3BとPhase 4は、提案書自身がbrowser telemetryで支配コストまたは誤差を確認した場合だけ実施すると定義した条件付き項目であり、trigger判定も未実施である。したがって本監査は「実装・非ブラウザgate合格、実機受入blocked」と判定する。

要件トレーサビリティ

提案 実装結果 主な証拠
6.1 イベント駆動 常時RAFを廃止。paint/statsをinvalidate時だけ予約し、非表示時はscheduler・render・refine・Exportを停止 script.jsのscheduleFrame、requestScheduler、stopSchedulers、visibilitychange。tests/source-contract.ps1
6.2 Canvas/計算grid分離 処理モード別Screen pixel budgetとeffective DPRを導入。Previewは110ms予算、cold deepは幅48px以下。標準shallowは2〜4MP、標準deepは実測MPPから約1.4秒予算へ調整、精細は4〜8MP screenPixelBudget、adaptStandardDeepBudget、resize、targetSize、RENDER_PROFILE
6.3 gesture/取消 wheel 110ms、pointer 90ms settle。操作中は再投影。省電力はPreviewで停止し、標準はCovered後の追加処理なし。精細の追加反復はescape境界候補だけをdeep 384/shallow 4,096点まで実行。非共有環境は短いtile/chunk gesture handlers、nextQualityDue、scheduleUnknownContinuation
6.4 deep遅延生成 main deep WASM、Module、Worker、referenceを数値条件付近まで生成しない。1 Workerから実測増員。実job wisdomを端末・kernel keyで永続化 prewarmDeepAssets、prepareDeepModules、addDeepWorker、deepWisdomStorageKey
6.5 WASM/memory compile済みdeep/BLA/color Moduleを一度だけ作りWorkerへclone。field buffer返却、byte ledger、Worker退役を実装。1 module/1 shared memory統合はPhase 3Bの条件付き項目 compileKernelPair、Worker init、memoryLedger、retireDeepAssets、tests/module-clone.mjs
6.6 byte cache fixed countを廃止し、mobile 96 MiB/desktop 192 MiBのmanaged byte ledgerとLRUへ変更 rendererMemoryBudget、detailCacheBudget、trimDetailCache
6.7 Hosted/Standalone content hash外部WASM+streaming compileのHosted、3ファイル直開きのStandaloneを生成。deep requestは深部到達前0の契約 hosted-loader.js、scripts/build-hosted.ps1、scripts/build-standalone.ps1、dist/
6.8 再現build 4 kernel source、ABI、固定clang flags、SHA-256 manifest、SIMD/scalar goldenを整備 src/、toolchain.lock.json、BUILD_REPRODUCIBILITY.md、build/wasm-v23/manifest.json
7.1 画素中心 JS、BigInt、shallow/deep/BLA WASM、detail、Exportをx+0.5,y+0.5へ統一しrenderer v23化 tests/pixel-mapping.mjs 851 sample、tests/pixel-contract.mjs 1,440 sample
7.2 adaptive AA 全域sample後、数値fieldの分類・分散・confidenceでquadtree 2×/4× subsample。linear RGBでresolve scoreDetailTiles、resolveSubsampleField
7.3 field/color分離 state、smooth、iteration、confidenceを保持。境界subsample fieldも保持。palette変更は再着色だけ makeField、colorizeField、recolorCurrentField
7.4 BLA/detail精度 Covered/detailで同一precision profile。高scoreまたはValidated detailはguarded direct。同一world座標の数値gateと視覚gateを分離 blaProfile、sendDeepDetailRect、pixel tests
7.5 未確定分離 ESCAPED / INTERIOR_LIKELY / INTERIOR_PROVEN / UNRESOLVEDを分離。反復を局所継続し、未確定数を表示・Export metadataへ記録 field constants、scheduleUnknownContinuation、runValidation
7.6 誤差ベース精度 pixel step/ULP/orbit telemetry+hysteresisでengine選択。round-to-nearest fixed point。P/P+64 directとreference checkpointを照合し、不一致時はglobal reference再構築 deepEngineNeeded、roundShift、highPrecisionDirectPixelAsync、verifyReferenceCheckpoints
7.7 超深部 上限と未確定を診断表示。scaled BLA、multi-reference、可変参照長はPhase 4のtelemetry条件付き研究 診断UI、下記「条件付き項目」
7.8 Export Quick snapshotと独立tiled Exportを分離。1×/2×/4×/custom、AA、Balanced/Validated、進捗、取消、全tile後encode、JSON sidecar runExport、tests/browser-benchmark.html
8/9 改廃・UX 連続q、固定DPR/HQ幅、RGB detail、固定deep閾値、eager pool、件数cacheを廃止。ViewSpec、history、正確座標、初回UI、mobile status、Advanced、accessibilityを実装 index.html、script.js、tests/source-contract.ps1

Gate結果

Gate 結果
JavaScript本体/生成Worker/browser harness構文、mock DOM初期化 pass
deep/BLA/color WebAssembly.Module structured clone・instantiate pass
256/320-bit direct agreement、analytic interior整数証明 pass
reference P/P+64 checkpoint agreement・故意の不一致検出 pass
Node固定scene runtime budget pass。shallow約0.34〜0.91秒/MP、seahorse deep BLA約19.6〜36.6秒/MPのrunを観測し、deep標準を固定画素数から実測時間適応へ変更
全backend pixel mapping・2×/4× tile seam pass、851 sample
配布shallow SIMD pixel contract pass、1,440 sample、mismatch 0
kernel source/ABI、payload checksum、Hosted/Standalone build pass
実ブラウザ performance/visual/interaction/Export/accessibility not-run。Browser bindingなし

機械可読なsource基準値はaudit/v23-source-baseline.json、未実施browser gateはaudit/v23-browser-baseline.jsonに記録した。

条件付き項目

Phase 3Bの1 shared memory統合、immutable reference/BLA table共有、WASM hot loopのatomic cancel、およびPhase 4のdouble-double、interval/error ball、scaled BLA、multi-reference、WebGPUは無条件要件ではない。IMPROVEMENT_PROPOSAL.md 3.3、7.7、Phase 3B/4の規定どおり、固定browser計測でcopy、memory、10^-280以深、glitch、reference生成のどれが支配的か判明した場合だけ着手する。現在はModule clone、buffer pool、短いchunk、guarded directで安全な前段を実装済みだが、telemetryがないため条件成立を主張しない。

Browser受入の再開条件

tests/browser-benchmark.htmlをHTTPで開けるin-app Browserを接続し、mobile/desktop/4Kの実viewport・DPRで実行する。runnerはsceneごとのcanvas SHA-256、Preview/Covered/Refined、idle write、long task、managed memory、deep request、wheel settle、再着色、Export完了/取消、accessibilityを採取し、acceptanceを出力する。合格JSONをaudit/v23-browser-baseline.jsonへ保存した時点で、固定実機に対する最終受入を判定できる。