2026-10-30 | ADS-007 | Docker migration scope Baseline production revision: 4c67b8e5b8b28273860ac96ec6f96112569dcd0d Release status: local and production acceptance complete. Functional revision: f6bd3391b41a7486e0bfdb590d47a5398832ff33 Cloudflare Pages successful deployment: ebdd3790-9b36-479e-b160-740c4e3118e4 Source identities (not signatures or safety proof): 06a4996e826efb572757b603c115d14e1eff5ffdc3144a41209a4eb94ab25bd9 src/utils/dockerMovePlan.js (LF-normalized source) 06743c7183a4a7842597ba3e334d3969d3f78522700e5d262d59ea0375a4096c src/utils/scriptEligibility.js (LF-normalized source) b35409055e2405095f45fd22077baafaec625144da75df13c586325a7dec1987 src/components/DockerMoveBuilder.astro (LF-normalized source) 434a19e607318ba7da57d633eb996cce5de471a7a76b1ffe30982cdb608adfd3 src/data/moveScope.ts (LF-normalized source) Bundled script SHA-256, Windows checkout bytes: bdeb4c864033e52817b58dbcc2fb06600311f185110746456faab8444c004c45 Bundled script SHA-256, LF deployment bytes: 5b35b743ee0609c61f6eca3666a3facb7d35b6e9742a52e5cfcf8ecefdff75e8 Scripts were not modified. Page/JSON hashes are computed from the actual bytes served by each build, not reused across line endings. Environment: Windows; Node v22.22.2; Astro 5.18.1; Pagefind 1.4.0; ChatGPT in-app browser; preview http://127.0.0.1:4321; desktop1280x900/narrow390x844. References checked 2026-10-30: https://docs.docker.com/engine/storage/containerd/ https://docs.docker.com/engine/daemon/ https://docs.docker.com/engine/security/rootless/ https://developers.google.com/search/docs/fundamentals/creating-helpful-content EN Observed baseline: on production, switching from a Rootless application selection to migration still showed one candidate and hid runtime selection. The direct builder generated a plan from two paths without runtime/storage/layout declarations. This is a reproduced UI decision gap, not an observed migration failure. The source moves Docker data-root, not a separate containerd image store. Official docs distinguish fresh Engine29+ defaults from upgraded installations. Change: reuse the existing selector and builder; require explicit local rootful Linux/systemd, classic storage and default context/service/config declaration before generation. Unknown, Rootless, Desktop, remote, containerd storage and unchecked layout stop generation and focus the corresponding field. These are user declarations, not measurements. No new content pages or host probes. JSON schema2 labels the declarations accordingly. Changing any declaration hides the old preview and removes its download URL. Review commands are read-only previews; private endpoints/settings should stay local. Do not switch storage or runtime just to pass. Steps / expected / actual: 30 Node unit tests passed (scope refusal, paths, literal quoting, selector states, copy error handling, locale completeness). Build and static checks passed:204 localized pages,1020 hreflang,200 sitemap entries,84 redirect fallbacks,6076 internal links,18 checksums. Four locales en/ja/zh-cn/zh-tw: keyboard Enter generation refused 9 controlled invalid states and focused the right field; explicit scope plus paths generated a preview. Actual copy readback equalled the run preview; four actual JSON downloads decoded as schema2 with classic/user-declaration fields and the local build hash above. Each of three scope changes invalidated output and download. Runtime-to-storage Tab focus passed. Desktop/narrow pages had no horizontal overflow. Selector Rootless-to-migration:0 candidates with runtime still visible and legacy-app note hidden; explicit rootful:1 migration candidate; OS change returned pending. No generated command was executed. Not verified: real Linux, Docker/container/daemon/image, migration, backups, filesystems, service recovery, private context or business integrity. No simulated installer/container test or real-host test was performed. User declarations can be wrong; local layout/storage still require independent review. Mutable dependencies do not inherit these results. Hashes identify bytes only. No AdSense action; no approval guarantee. Subjective unchanged 1–5 rubric: task completion5→5, operational accuracy4→4, decision support5→5, language quality4→4, provenance4→4. A concrete boundary gap closed without claiming an overall score increase. Not Google scores or approval probabilities. ZH-CN 实际发现:生产选择器从 Rootless 应用任务切到迁移仍显示1个候选,并隐藏运行环境;直接构建器只填两条路径即可生成方案。这是已复现的网页决策缺口,不是实机迁移失败。源码只迁移 Docker data-root,不移动独立 containerd image store;官方文档区分 Engine29+ 全新与升级安装。 改进:复用现有选择器和构建器,生成前要求声明本地 rootful Linux/systemd、经典存储,以及默认 context/服务/配置。未知、Rootless、Desktop、远程、containerd 存储或未勾选布局均阻止生成,并聚焦对应字段。声明不等于主机测量;未新增内容页或探测。JSON第2版明确记录声明性质。修改任一声明会清除预览和下载地址。只读命令仅供审阅,私有端点/配置留在本地;不要为通过而切换运行或存储方式。 步骤/预期/实际:30项单元测试通过,包含范围拒绝、路径、字面Shell引用、选择器状态、复制错误和语言完整性。构建及静态检查通过:204页、1020语言链接、200站点地图项、84旧链接跳转、6076内部链接、18校验文件。四语言逐一用Enter验证9种受控错误及正确焦点,符合声明与路径生成预览;实际复制回读一致,四份实际下载JSON均为第2版、经典存储/用户声明及上列本地哈希。三类声明变动分别清除旧方案/下载,Tab从运行环境进入存储字段。桌面1280×900与窄屏390×844无横向溢出。选择器Rootless切迁移为0候选、环境仍可见且不展示旧应用说明;主动rootful后1候选,更换系统回到待声明状态。 未执行生成命令、安装器、Docker、容器、磁盘或真实服务操作;没有安装模拟、容器或实机测试。Linux兼容、备份、恢复、文件系统、业务完整性均未验证,声明仍需自行核对。可变依赖不继承结论,哈希只标识字节。未操作AdSense,不承诺通过。同一主观1–5标准保持任务5→5、操作准确4→4、决策5→5、语言4→4、证据4→4;修复具体缺口不虚增整体评分,也不是Google分数或概率。 ZH-TW 實際發現:正式站選擇器從Rootless應用切到遷移仍有1個候選並隱藏環境;直接建構器只填路徑即可產生方案。這是已重現的網頁決策缺口,不是實機遷移失敗。原始碼只移動Docker data-root,不移動獨立containerd image store;官方文件區分Engine29+全新與升級安裝。 改進:沿用既有選擇器與建構器,要求聲明本機rootful Linux/systemd、傳統儲存與預設context/服務/設定。未知、Rootless、Desktop、遠端、containerd儲存或未確認配置均停止產生並聚焦對應欄位。這是使用者聲明,不是主機量測;未新增內容頁或探測。JSON第2版記錄聲明性質,改變任一聲明即清除預覽和下載網址。唯讀命令僅供審閱,私人端點/設定留在本機;不要為通過而切換方式。 步驟/預期/實際:30項單元測試通過,涵蓋範圍拒絕、路徑、字面Shell引用、選擇器狀態、複製錯誤與語言完整性。建構及靜態檢查通過:204頁、1020語言連結、200網站地圖項、84舊網址轉址、6076內部連結、18校驗檔案。四語言逐一Enter驗證9種受控錯誤及正確焦點,符合聲明與路徑產生預覽;實際複製回讀一致,四份實際下載JSON均為第2版、傳統儲存/使用者聲明及上列本機雜湊。三類聲明各自清除舊方案/下載,Tab從執行環境進入儲存欄位。桌面1280×900、窄螢幕390×844無橫向溢出。Rootless切遷移為0候選、環境可見且隱藏舊應用說明;主動rootful後1候選,變更系統回到待聲明。 未執行命令、安裝器、Docker、容器、磁碟或真實服務操作;無安裝模擬、容器或實機測試。Linux相容、備份、復原、檔案系統、業務完整性未驗證。聲明需自行核對,可變依賴不沿用結果,雜湊僅標識位元組。未操作AdSense,不保證通過。同一主觀1–5標準保持任務5→5、操作準確4→4、決策5→5、語言4→4、證據4→4;不虛增整體評分,亦非Google分數或機率。 JA 実際の発見:公開サイトでRootlessのアプリ選択から移行へ変更すると候補が1件残り、環境欄が隠れました。直接の作成機能も2つのパスだけで計画を生成しました。再現した画面上の判断の欠落で、実機移行の失敗を観測したものではありません。ソースはDocker data-rootのみを移動し、独立containerd image storeは移動しません。公式資料はEngine29以降の新規導入と更新環境を区別しています。 変更:既存機能を使い、ローカルrootful Linux/systemd、従来の保存方式、既定コンテキスト・サービス・設定の申告を必須にしました。不明、Rootless、Desktop、遠隔、containerd保存方式、配置未確認では生成せず該当欄へ移動します。申告は計測ではなく、新しい内容ページやホスト調査は追加していません。JSON第2版も申告と明記し、申告変更で旧プレビューとダウンロード先を消します。読み取りコマンドは確認用表示のみで、非公開接続先や設定は手元に保管します。通過目的で方式を切り替えないでください。 手順・期待・実際:30件の単体試験が成功し、範囲拒否、パス、Shellの文字列引用、選択状態、コピー失敗、翻訳の完全性を確認。ビルドと静的確認は204ページ、言語リンク1020、サイトマップ200、旧URL転送84、内部リンク6076、照合ファイル18で成功。4言語それぞれEnterで9つの管理されたエラーと正しいフォーカス、条件を申告した計画生成を確認。実際のコピー内容は表示と一致し、4つの実ダウンロードJSONは第2版、従来保存方式・利用者申告、上記ローカルハッシュと一致。3種類の申告変更で旧出力・ダウンロードを無効化し、Tabで環境から保存方式へ移動。1280×900と390×844で横はみ出しなし。選択機能はRootlessから移行へ変えると0件、環境欄表示・旧アプリ説明非表示、rootful申告後1件、OS変更後は申告待ちです。 未確認:実機Linux、Docker・コンテナー・イメージ、移行、バックアップ、復旧、ファイルシステム、業務整合性。生成コマンドやインストーラーを実行せず、導入の模擬・コンテナー・実機試験もありません。申告は独立確認が必要で、可変依存に結論は引き継げません。ハッシュはバイト識別のみ。AdSense操作や承認保証はありません。同じ主観1–5基準は作業完了5→5、操作精度4→4、判断支援5→5、言語4→4、出典4→4で維持。具体的欠落の修正を全体点の上昇として扱わず、Googleの点数・確率でもありません。 Production acceptance / 线上验收 / 正式站驗收 / 公開環境の確認 (2026-10-30) EN: All four localized production builders repeated the 9 error/focus states, generated only with explicit supported declarations, copied exactly, downloaded/decoded schema2 with the production LF hash above, and invalidated after all three scope changes. All four selectors passed Rootless→migration refusal, rootful match and OS-change reset. Four-language production selector and builder narrow-screen/keyboard checks passed; no horizontal overflow or final browser console errors. HTTP source download:200,12676 bytes,SHA-256 matched all four JSON plans. No script or generated command executed. Totals:7 accepted tasks,7 complete,0 remaining;1 added/1 completed this batch. ZH-CN:生产四语言构建器重新通过9种错误/焦点、明确符合声明后生成、精确复制、实际下载解析第2版JSON及上列生产LF哈希,三类声明变动均清除旧方案。四语言选择器通过Rootless切迁移拒绝、主动rootful匹配及换系统清除。线上四语言两工具窄屏/键盘检查通过,无横向溢出及最终浏览器错误。HTTP源码下载200、12676字节,与四份JSON哈希一致;未运行脚本或命令。总数7、累计完成7、剩余0,本轮新增1/完成1。 ZH-TW:正式站四語言建構器重新通過9種錯誤/焦點、明確符合聲明後產生、精確複製、實際下載解析第2版JSON與上列正式LF雜湊,三類聲明變更均清除舊方案。四語言選擇器通過Rootless切遷移拒絕、主動rootful符合及換系統清除。兩工具窄螢幕/鍵盤檢查通過,無橫向溢出與最終瀏覽器錯誤。HTTP原始碼下載200、12676位元組,與四份JSON雜湊一致;未執行腳本或命令。總數7、累計完成7、剩餘0,本輪新增1/完成1。 JA:公開4言語で9つのエラーとフォーカス、対象申告後のみ生成、正確なコピー、実ダウンロード第2版JSONと上記公開LFハッシュ、3申告変更による無効化を再確認。4言語の選択機能もRootlessから移行への拒否、rootful申告後の一致、OS変更での解除が成功。両機能の狭い画面・キーボード確認、横はみ出しなし、最終ブラウザーエラーなし。HTTPソース取得200、12676バイトで4つのJSONと一致。スクリプト・表示コマンドは実行していません。対象7件、完了7、残り0、今回追加1・完了1。