硬體測試擁有權
測試期限是判定失敗的期限,不是終止 DMA 擁有者的許可。
受監督的硬體驗證會在 DevKit 上使用 tools/hardware_test_supervisor.py。
常駐監督程式擁有實際的加速器程序。CTest、SSH 與 Python 客戶端僅擁有回報連線。
選擇受監督的驗證模式
標準 CI 直接執行 CTest 與效能子程序,不需要監督程式或通訊端。 必要覆蓋範圍檢查仍會拒絕選取測試中的缺漏、停用、略過或失敗結果。 以下程序是明確選用的驗證模式,不是標準 CI 的先決條件。
以 NEAT_GUARDED_HARDWARE_TESTS=ON 建置 Core,或使用
SIMANEAT_GUARDED_HARDWARE_TESTS=ON 設定 CMake。原生 CTest 目標會成為回報代理;
測試引數 、環境、標籤、資源鎖與現有的 TIMEOUT 屬性維持不變。
已安裝的額外元件提供相同的監督程式客戶端。設定
SIMA_HARDWARE_SUPERVISOR_SOCKET,即可讓效能矩陣選用相同的受監督驗證模式。
若通訊端為空、無法使用或請求遭拒,執行會失敗,絕不退回直接執行。
在 DevKit 上以一般子程序方式執行效能測試時,請勿設定此變數。
具權限的驗證擁有者提供全新、私用且僅使用一次的狀態資料夾與設定。 監督程式會拒絕舊的准入/失敗停止資料夾。設定會固定下列項目:
identity:admission_id、boot_id、cohort_sha256、lease_pid、lease_start_ticks、observer_id。state_dir、該目錄內的socket,以及supervisor_sha256。checker:由 root 擁有的確切唯讀檢查器command、執行檔sha256, 以及不占用資源的探查timeout_sec。executables:一般檔案的絕對路徑與 SHA256 身分、確切的arguments、deadline_sec與受保護的required_env值。多種核准的命令/期限組合應放在variants。
僅在原始測試沒有逾時限制時使用 deadline_sec: null。CTest 代理會要求確切核准的
期限;矩陣則要求其未變更的 180 秒期限。拒絕載入器注入,並在 required_env 中固定
標準執行階段/外掛程式路徑,以及數值驗證基準設定。
檢查器會收到 --phase launch|active|retired --owner-json PATH。它必須傳回新的 JSON,
內含 schema: 1、status: "ready"、確切固定的 identity 與 checked_at_epoch。
它 絕不可啟動加速器工作或變更硬體。
擁有者記錄綁定 PID、啟動 tick、開機 ID、工作階段 ID、執行 ID 及完整要求的 SHA256。
在允許 exec 前,監督程式會將擁有權持久記錄,並在尚未占用資源的子程序等待於
啟動屏障時,重新檢查准入與客戶端存活狀態。運作中的迴圈會記錄工作階段成員、
驗證身分、檢查即時准入狀態,並掃描持久日誌中的未安全結束/隔離狀態。
實際以非負狀態碼結束後,exit.json 會綁定擁有者、傳回碼、期限、要求雜湊與觀察到的
完成時間。retired 檢查器必須加入:
retirement.proven: true;kind: "authoritative-driver-retirement"或"reviewed-graceful-exit";- 非空的證據
token; scope: "whole-owner-process-tree-and-dma";owner:確切的擁有者記錄。
檢查器實作必須以已審查的執行與傳輸完成契約、實際擁有權/子孫程序檢查、 最新的故障觀察,以及目前的驅動程式/韌體/套件組身分,證實上述證據。 僅取樣到零個工作、程序結束、時間經過或 SSH 連線正常都不是證明。 純 CPU 測試固定資料可使用經專門審查的安全結束契約;不要為其虛構驅動程式證據。
逾時與復原
監督程式在逾時、斷線、取消、無法確認安全結束或觀察器失敗時,絕不傳送 TERM/KILL。
它會封存不可逆的失敗停止狀態,保留擁有者與持久日誌,並拒絕後續啟動。
矩陣保留 ENV_BROKEN / ENV_TIMEOUT,並將剩餘情境記為未執行;
絕不捏造通過或可接受的略過。延遲到達的輸出無法撤銷逾時。
自然結束且已完全安全釋放的數值失敗仍是失敗案例,不會與擁有權不明混為一談。
輸出檔案的完成條件不代表已安全釋放。選用的應用程式停止要求需要確切核准的 完成條件/引數組合,以及固定的處理常式/排空審查憑證。僅允許這種明確審查過的 SIGTERM 要求;它絕不是清理動作,也絕不升級為 SIGKILL。 驗收前仍必須有實際結束與權威性的安全釋放證據。
不要停止 remoteproc、卸載/解除綁定驅動程式、刪除借用緩衝區,或終止狀態不明的 擁有者。請使用裝置現有且受保護的復原程序。復原後建立新的准入;舊准入絕不重新開放。 任何暫時韌體試驗結束後,都必須還原並驗證原始韌體、服務與復原原則。
客戶端與證據
Python 客戶端使用 run_owned(command, cwd, env, deadline_sec, evidence_dir, socket_path, completion=None, graceful_stop=None)。CLI 支援
run-json --request FILE --result FILE --socket PATH。結果會標示
completed、timeout、fail_stop 或 refused、擁有者身分、實際傳回碼、
安全釋放證明及持久 stdout/stderr 路徑。客戶端結束無法終止實際的硬體子程序;
常駐程式必須在目標上獨立執行,而非作為會受工作階段清理影響的 SSH 前景程序。
在硬體准入前先執行無害的原生主機測試。驗證報告必須區分:在此已審查安全框架下 使用未變更的工作負載/驗證基準/期限,以及執行未修改的舊框架或 實際託管的 CI 工作流程。
對於 Python 3.13 及更新版本,PyNeat 中繼資料選擇 NumPy >=2.1,<3;較舊 Python
則選擇 >=1.24,<2。中繼資料解析不代表 ndarray 數值等價。
驗證該 Python/NumPy 套件組前,請先執行已安裝目標的 dtype、步幅、複製/零複製與生命週期測試。