diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index b825210..638f49e 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -247,6 +247,11 @@ agent or engineer to remove them without reconstructing context from chat. and existing file coverage, and `plan_asset_file_load_for_platform` consumes that probe instead of owning the `stat` call inline. Injected file-watch or storage services still need to own the live probe before the debt closes. +- 2026-06-12: DEBT-0054 was narrowed again. `LayoutManager::load` now calls the + explicit timestamp probe only for platform families that use mtime reloads, + then passes the result into the pure `plan_asset_file_load_with_probe` + decision. The retained probe still uses local `stat` until injected storage + or file-watch services replace it. - 2026-06-05: DEBT-0056 was narrowed. `src/asset.h` no longer exposes Android SDK types or forward declarations; retained Android asset-manager and asset handles are stored as opaque pointers and cast only inside `src/asset.cpp`, diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 9b63d04..4c29d97 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -646,6 +646,9 @@ decision used by live canvas cursor requests before retained desktop platform cursor bridges continue. `pp_platform_api::probe_asset_file_timestamp` now owns the retained asset mtime probe used by layout reload planning, with missing/existing file coverage. +`LayoutManager::load` now consumes that explicit probe plus the pure +`plan_asset_file_load_with_probe` decision instead of calling the probing +wrapper directly. `pano_cli plan-clipboard-read` and `pano_cli plan-clipboard-write` expose the app-core clipboard text decisions used by live clipboard get/set requests before retained platform clipboard bridges continue. diff --git a/src/layout.cpp b/src/layout.cpp index 5804b14..2aafb8c 100644 --- a/src/layout.cpp +++ b/src/layout.cpp @@ -24,10 +24,15 @@ void LayoutManager::create() bool LayoutManager::load(const char* path) { auto abs_path = Asset::absolute(path); - const auto file_load = pp::platform::plan_asset_file_load( - abs_path, + const auto platform_family = pp::platform::current_platform_family(); + const auto file_probe = pp::platform::platform_uses_asset_file_mtime_reload(platform_family) + ? pp::platform::probe_asset_file_timestamp(abs_path) + : pp::platform::AssetFileTimestampProbe {}; + const auto file_load = pp::platform::plan_asset_file_load_with_probe( + platform_family, m_loaded, - m_file_last_write_time); + m_file_last_write_time, + file_probe); if (!file_load.should_read_file) return file_load.skipped_load_result; m_file_last_write_time = file_load.last_write_time;