diff --git a/.claude/skills/anland-mobilegl-plasma/SKILL.md b/.claude/skills/anland-mobilegl-plasma/SKILL.md index 4a6db41a..156d0f1a 100644 --- a/.claude/skills/anland-mobilegl-plasma/SKILL.md +++ b/.claude/skills/anland-mobilegl-plasma/SKILL.md @@ -6,8 +6,8 @@ description: Bring up, rebuild, deploy, switch backends on, test and debug the " # MobileGL on anland KDE Plasma **Setting this up on a new machine or phone from source: `reproduce.md` next to this file.** -Human-readable runbook (Chinese, same content): `docs/Disaggregated/notes/anland/runbook-plasma.md`. -Background: `docs/Disaggregated/notes/anland/handoff-legacy-mobilegl-unified.md` (state, commits, known +Human-readable runbook (Chinese, same content): `docs/archive/notes/anland/runbook-plasma.md`. +Background: `docs/archive/notes/anland/handoff-legacy-mobilegl-unified.md` (state, commits, known issues) and `plan-ahb-dmabuf.md` (zero-copy design). All scripts are in `scripts/` next to this file; parameters are documented at the top of each script and in `scripts/env.sh`. @@ -26,7 +26,7 @@ nobody else is mid-test. Use your own `ct.sh` channel names (others use c, c2, 7. KWin 6.7.4 with anland's `anland` backend renders straight into the anland Android Surface through the server. While the window is not on screen (consumer disconnected) the backend powers its output down (DPMS Off + RenderLoop inhibited: no compositing, no frame callbacks) and back up when the window returns. Every other GL process is `MOBILEGL_IPC_SURFACE=offscreen` and presents through KWin. 8. Client = `/opt/mobilegl/lib/libMobileGL.so` (glibc aarch64), the container's **system-wide** GL vendor (section below): glvnd EGL vendor `/usr/share/glvnd/egl_vendor.d/10_mobilegl.json` (sorts before the distribution's `50_*.json`, which serves whenever MobileGL declines), GLX vendor `/usr/lib/libGLX_mobilegl.so.0`, settings from `/etc/mobilegl/client.conf` (`MOBILEGL_TRANSPORT=spawn MOBILEGL_IPC_DATA=shm MOBILEGL_IPC_CONTROL=unix:@anland-mobilegl`) + `/etc/mobilegl/backend`. No per-process environment is needed. 9. Zero-copy windows: client `wl_egl_window` frames are server-allocated AHardwareBuffer "shared images" exported as dma-buf fds over `zwp_linux_dmabuf_v1`; KWin imports them with EGL and the server recognises its own buffer by inode. KWin gets a DRM device via `GBM_BACKEND=mobilegl` -> `/usr/lib/gbm/mobilegl_gbm.so` (node is only an identity, never ioctl'd). Without linux-dmabuf the client falls back to wl_shm readback. -10. X11 (`docs/Disaggregated/notes/anland/plan-x11-gpu.md`): Xwayland draws with **glamor on MobileGL** (an offscreen session; `GBM_BACKEND=mobilegl` on KWin's render node; window pixmaps are shared images handed to KWin as linux-dmabuf buffers; its `glFlush` publishes them through the server, `/tmp/mgl-xwayland.client.log`); `ANLAND_XWAYLAND_GLAMOR=0` in KWin's drop-in brings back the software `-shm` Xwayland. GLX windows present their frames as shared images through **DRI3 + Present** (log `presented through DRI3+Present shared images`), falling back to readback + MIT-SHM / `xcb_put_image` when the X server has no DRI3 (`MOBILEGL_GLX_PRESENT=readback` forces it per app). Chrome runs ANGLE-GLES over MobileGL EGL with the GPU in its own process (`mobilegl-startup.sh chrome`; `MOBILEGL_CHROME_GPU=in-process` opts out), presenting GBM dma-bufs over linux-dmabuf; after a device loss Chrome restarts that process and repaints. +10. X11 (`docs/archive/notes/anland/plan-x11-gpu.md`): Xwayland draws with **glamor on MobileGL** (an offscreen session; `GBM_BACKEND=mobilegl` on KWin's render node; window pixmaps are shared images handed to KWin as linux-dmabuf buffers; its `glFlush` publishes them through the server, `/tmp/mgl-xwayland.client.log`); `ANLAND_XWAYLAND_GLAMOR=0` in KWin's drop-in brings back the software `-shm` Xwayland. GLX windows present their frames as shared images through **DRI3 + Present** (log `presented through DRI3+Present shared images`), falling back to readback + MIT-SHM / `xcb_put_image` when the X server has no DRI3 (`MOBILEGL_GLX_PRESENT=readback` forces it per app). Chrome runs ANGLE-GLES over MobileGL EGL with the GPU in its own process (`mobilegl-startup.sh chrome`; `MOBILEGL_CHROME_GPU=in-process` opts out), presenting GBM dma-bufs over linux-dmabuf; after a device loss Chrome restarts that process and repaints. ## First-time prerequisites (Windows host) diff --git a/.claude/skills/anland-mobilegl-plasma/scripts/x11-verify.sh b/.claude/skills/anland-mobilegl-plasma/scripts/x11-verify.sh index f563537c..96b57491 100644 --- a/.claude/skills/anland-mobilegl-plasma/scripts/x11-verify.sh +++ b/.claude/skills/anland-mobilegl-plasma/scripts/x11-verify.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# x11-verify.sh [...] - device verification of X11 on the GPU (docs/Disaggregated/notes/anland/ +# x11-verify.sh [...] - device verification of X11 on the GPU (docs/archive/notes/anland/ # plan-x11-gpu.md): Xwayland drawing with glamor on MobileGL, and GLX windows presented through # DRI3 + Present from shared images. Steps, in the order a full run takes them: # diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 89d73ded..7e57d02c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1821,7 +1821,7 @@ jobs: MOBILEGL_IPC_STRICT_ERRORS: "1" run: ctest --output-on-failure -L unit --no-tests=error -j "$(nproc)" --output-junit "${RUNNER_TEMP}/unit-strict.xml" - # ---- P5e (ra), MG_Remote/CONTRACT-P5E.md §7: ONE STEP, TWO ARMS, AND THE TREE PICKS ---- + # ---- P5e (ra), docs/archive/contracts/CONTRACT-P5E.md §7: ONE STEP, TWO ARMS, AND THE TREE PICKS ---- # # This lane was written as an EXPECTED-RED control: under strict every integration-split # entry aborts on its first BARRIER-PULLED read, so the step gated on the run failing and diff --git a/CMakeLists.txt b/CMakeLists.txt index 309ab151..e41fe550 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -600,7 +600,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED AND set(MOBILEGL_BUILD_DISAGGREGATED_INPROC OFF) endif() -# P13 W5 (notes/p13/W5-DESIGN.md): the record arm is part of every library - the one without +# P13 W5 (docs/archive/notes/p13/W5-DESIGN.md): the record arm is part of every library - the one without # MG_Remote (FCL's) runs it too. Its temporary guard, MOBILEGL_BUILD_RECORD_ARM, was folded away at # S8 (scripts/ci/retired_switches.py keeps it from coming back). @@ -712,7 +712,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # P11 B2: T0's Offers on the aux socket, matched to their map_persistent records by seq. MobileGL/MG_Remote/Server/AdoptInbox.cpp # Shared images: server-allocated AHardwareBuffers exported to clients as dma-buf descriptors - # (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). + # (docs/archive/notes/anland/plan-ahb-dmabuf.md). MobileGL/MG_Remote/Server/SharedImageRegistry.cpp MobileGL/MG_Remote/Server/ServerSpawn.cpp # P5f fc: the value frame that replaced the control mailbox's function-pointer payload, @@ -1009,7 +1009,7 @@ if (UNIX AND NOT APPLE) endif() # ---- Shared images outside GL: the C ABI and the GBM backend (Linux client, split builds) ---- -# docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md. libMobileGL.so exports the shared-image C ABI +# docs/archive/notes/anland/plan-ahb-dmabuf.md. libMobileGL.so exports the shared-image C ABI # (MG_Impl/SharedImageApi.h); mobilegl_gbm.so (MG_Gbm/) is a separate GBM loader module that reaches # it through dlsym. Self-contained: nothing outside this block refers to either. if (MOBILEGL_BUILD_DISAGGREGATED AND UNIX AND NOT APPLE AND NOT ANDROID) diff --git a/MobileGL/Config.h b/MobileGL/Config.h index 1829c10c..f7ac25b0 100644 --- a/MobileGL/Config.h +++ b/MobileGL/Config.h @@ -657,7 +657,7 @@ namespace MobileGL::MG_Config { // (WireTables.cpp), half of the stream link's 24-entry answer store. // Measurements: docs/Performance/ipc-create-window.md. Uint32 CreateWindow = 10; - // MOBILEGL_IPC_PBO_READBACK_SYNC (P9 W1, MG_Remote/CONTRACT-P9.md §1): 1 = a glReadPixels + // MOBILEGL_IPC_PBO_READBACK_SYNC (P9 W1, docs/archive/contracts/CONTRACT-P9.md §1): 1 = a glReadPixels // or glGetTexImage into a bound GL_PIXEL_PACK_BUFFER takes the reply-slot form again - // the client waits for the pixels and uploads them into the buffer itself, as before P9. // 0 (default) sends read_pixels_to_buffer / get_texture_image_to_buffer, waits for @@ -665,7 +665,7 @@ namespace MobileGL::MG_Config { // red-once of the wait-count gate (PackBufferReadbackScenario): it must show a reply // wait per read. Uint32 PboReadbackSync = 0; - // MOBILEGL_IPC_POLL_ESCALATE (P10, MG_Remote/CONTRACT-P10.md §1): a glClientWaitSync with a + // MOBILEGL_IPC_POLL_ESCALATE (P10, docs/archive/contracts/CONTRACT-P10.md §1): a glClientWaitSync with a // zero timeout or a glGetSynciv(GL_SYNC_STATUS) is answered by the client from what the // server reported (kEventFenceSignaled) - "signaled" when it has been, "not yet" otherwise // - and only the Nth "not yet" in a row on one fence crosses as a real round trip, so a @@ -697,7 +697,7 @@ namespace MobileGL::MG_Config { // GLContext by the client's residual fill and a free-running queue lets the server // read a FUTURE value of them. Uint32 VerbBarrier = 1; - // MOBILEGL_IPC_RUN_AHEAD (P5e, MG_Remote/CONTRACT-P5E.md §1): 1 = after publishing an + // MOBILEGL_IPC_RUN_AHEAD (P5e, docs/archive/contracts/CONTRACT-P5E.md §1): 1 = after publishing an // UNBARRIERED record the client returns immediately instead of waiting for its apply. // It is one half of a conjunction and never a switch on its own - the client arms // run-ahead only when the server also publishes kCapRunAheadApply, so on Magma, and on diff --git a/MobileGL/ConfigLoader.cpp b/MobileGL/ConfigLoader.cpp index 7b355dd8..4a80b120 100644 --- a/MobileGL/ConfigLoader.cpp +++ b/MobileGL/ConfigLoader.cpp @@ -616,7 +616,7 @@ namespace MobileGL::MG_ConfigLoader { // P11 B2: the server's own T0 allow switch (Config.h). ipc.AllowAdoptT0 = QueryEnvUint32("MOBILEGL_IPC_ALLOW_ADOPT_T0", 1, 0, 1); ipc.VerbBarrier = QueryEnvUint32("MOBILEGL_IPC_VERB_BARRIER", 1, 0, 1); - // P5e (MG_Remote/CONTRACT-P5E.md §1). The wait rule's A/B, parsed here like every + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1). The wait rule's A/B, parsed here like every // other IPC knob and armed only where the server publishes kCapRunAheadApply. ipc.RunAhead = QueryEnvUint32("MOBILEGL_IPC_RUN_AHEAD", 1, 0, 1); // ... and forced OFF by the verify harness for BatchWaits' reason, one step further: diff --git a/MobileGL/MG_Backend/BackendObject.h b/MobileGL/MG_Backend/BackendObject.h index 712f7713..1cf8682f 100644 --- a/MobileGL/MG_Backend/BackendObject.h +++ b/MobileGL/MG_Backend/BackendObject.h @@ -656,7 +656,7 @@ namespace MobileGL { Uint32 Height = 0; }; - // SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md): server-allocated colour + // SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md): server-allocated colour // buffers exported to clients as dma-buf descriptors. // // The server-side view of one image, as a backend sees it: `NativeBuffer` is the image's @@ -756,7 +756,7 @@ namespace MobileGL { (void)region; return true; } - // IMPLICIT SYNC BY FLUSH (docs/Disaggregated/notes/anland/plan-x11-gpu.md): the session + // IMPLICIT SYNC BY FLUSH (docs/archive/notes/anland/plan-x11-gpu.md): the session // on this (the apply) thread ends a frame at a glFlush. Every shared image it used since // its last boundary is published as written and read by one fence of everything it // submitted (SharedImages::ReadTracker::PublishFrameAsWrite), and from now on its first diff --git a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp index efde721e..4641e5ce 100644 --- a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp +++ b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp @@ -10391,7 +10391,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // format, not only the redundant-encoding ones this mirror serves, and marks the store // driver-written where it cannot. The store is what answers a split glGetTexImage the // driver refuses to read back (WireTextureReadback.inc's store route); every other split - // read of the destination reads the GPU level itself (notes/p8/E.md). + // read of the destination reads the GPU level itself (docs/archive/notes/p8/E.md). // // BEHIND #if MOBILEGL_BUILD_DISAGGREGATED so the pull build's code does not move (G1), // and the arm is the TRANSPORT and not the build - build-split runs its unit and @@ -10425,7 +10425,7 @@ namespace MobileGL::MG_Backend::DirectGLES { MGLOG_E_ONCE("%s: source or destination image failed to sync; declining the copy", __func__); return; } - // P8-E (notes/p8/E.md): THE SERVER'S STAGED STORE FOLLOWS THE COPY. Both endpoints are synced, + // P8-E (docs/archive/notes/p8/E.md): THE SERVER'S STAGED STORE FOLLOWS THE COPY. Both endpoints are synced, // so every byte the store holds for them is on the driver, and the copy below is a raw // texel-block move - the store makes the same move, which keeps the destination level // answerable from here when the driver will not read it back (ReadTextureImageWire's store @@ -12668,7 +12668,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // server process has no frontend at all, so pDefaultFramebufferInfo is null there. Gating on // it returned before the post, the client kept Init.cpp's GL_DEPTH32F_STENCIL8 guess for a // D24S8 pbuffer, and a blit into a buffer allocated from that guess lost depth and stencil - // (notes/p8/SE.md). Inproc only passed because client and server share the process. + // (docs/archive/notes/p8/SE.md). Inproc only passed because client and server share the process. if (!g_GLESFuncs.glGetFramebufferAttachmentParameteriv) return; if (!defaultFBOInfo && MG_Pipe::gMGPipeCallbacks.OnSurfaceChanged == nullptr) return; @@ -14659,7 +14659,7 @@ namespace MobileGL::MG_Backend::DirectGLES { } #if MOBILEGL_BUILD_DISAGGREGATED - // ---- SHARED IMAGES (DirectGLES.h; docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) ------ + // ---- SHARED IMAGES (DirectGLES.h; docs/archive/notes/anland/plan-ahb-dmabuf.md) ------ namespace SharedImageImpl { #if defined(__ANDROID__) namespace { diff --git a/MobileGL/MG_Backend/DirectGLES/DirectGLES.h b/MobileGL/MG_Backend/DirectGLES/DirectGLES.h index 343eb7bd..5c0a5791 100644 --- a/MobileGL/MG_Backend/DirectGLES/DirectGLES.h +++ b/MobileGL/MG_Backend/DirectGLES/DirectGLES.h @@ -515,7 +515,7 @@ namespace MobileGL::MG_Backend::DirectGLES { } // namespace RenderStateImpl #if MOBILEGL_BUILD_DISAGGREGATED - // ---- SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) ---- + // ---- SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md) ---- // // A shared image reaches the driver only through the Android import path: its AHardwareBuffer // becomes an EGLImage (EGL_ANDROID_get_native_client_buffer + EGL_ANDROID_image_native_buffer) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 7cd48dba..5099c6d9 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -2720,7 +2720,7 @@ namespace MobileGL::MG_Backend::DirectGLES { const Uint16 uploadTarget = MG_Pipe::MGPipeSubDataUploadTargetOf(record.Target); const IntVec3 extent = MG_Record::StagedTextureUploadExtent(stored->Desc, record); const SizeT runBytes = static_cast(record.Blob.Size); - // P8-E (notes/p8/E.md): THE LEVEL HOLDS A COPY THE CLIENT NEVER SAW + // P8-E (docs/archive/notes/p8/E.md): THE LEVEL HOLDS A COPY THE CLIENT NEVER SAW // (FollowCopyImageInStagedStore). The run is the client's shadow, stale everywhere it // did not write, so only the texels it names land - its regions, or its union box // when it carries none (D-D3's "the box is the whole story"). A run the store cannot @@ -5769,7 +5769,7 @@ namespace MobileGL::MG_Backend::DirectGLES { m_forceTextureParamsResync = true; return; } - // P9 W2 (notes/p9/W2-REMINT.md): EVERY BYTE THIS RE-MINT REPLAYS IS ALREADY ON THE + // P9 W2 (docs/archive/notes/p9/W2-REMINT.md): EVERY BYTE THIS RE-MINT REPLAYS IS ALREADY ON THE // SERVER. The GPU image holds what the GPU wrote (render targets, clears, copies, // generated mips, image stores) and the staged store holds what the client uploaded; // the client is never asked, so no pull protocol exists. Reading only the store would @@ -7174,7 +7174,7 @@ namespace MobileGL::MG_Backend::DirectGLES { : (obj)->GetStorageType()) #if MOBILEGL_BUILD_DISAGGREGATED - // SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). The client defined + // SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md). The client defined // level 0 as WxH RGBA8 with no data and then attached the image; the record's descriptor // still says so, but the texels are the image's, so nothing below may allocate or upload. Bool BackendTextureObject::SyncSharedImageStorage(const MG_Pipe::MGPipeResourceRecord& record) { @@ -14009,7 +14009,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // ===================================================================================== // P5e SEAMS: DECLARED AND REFUSED HERE, BODIED BY THE FAMILY PACKAGES - // (MG_Remote/CONTRACT-P5E.md §4.2; BRIEF-P5E §1's "each such seam is a declared signature + // (docs/archive/contracts/CONTRACT-P5E.md §4.2; BRIEF-P5E §1's "each such seam is a declared signature // in c0e so both sides compile from day one") // ===================================================================================== // diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.h b/MobileGL/MG_Backend/DirectGLES/Managers.h index ee9bfca8..03e9c7fc 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.h +++ b/MobileGL/MG_Backend/DirectGLES/Managers.h @@ -1557,7 +1557,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // applier stored, so the answer is the same whichever side resolved it first. Bool BackendUsesNativeBaseInstance(); - // ---- P5e SEAM (MG_Remote/CONTRACT-P5E.md §4.2; declared by c0e, bodied by id/vi) ---- + // ---- P5e SEAM (docs/archive/contracts/CONTRACT-P5E.md §4.2; declared by c0e, bodied by id/vi) ---- // // THE VAO TWIN, RESOLVED FROM THE HANDLE THE RECORD CARRIED - MGPipeApplierState:: // BoundVertexElements - instead of from the frontend VertexArrayObject the draw's @@ -1733,7 +1733,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // flag, allocator or pixel-store object participates. P9 W2: a level // the driver does not hold (defined after the last sync) is never read // back, and a readback the driver refuses falls back to the staged - // level when the store covers it (notes/p9/W2-REMINT.md). + // level when the store covers it (docs/archive/notes/p9/W2-REMINT.md). void RequireImageBindableStorageByHandle(MG_Pipe::MGPipeHandle res, const MG_Pipe::MGPipeResourceRecord& record); #if MOBILEGL_BUILD_DISAGGREGATED @@ -2057,7 +2057,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // table's answer is an array element and only a GetOrCreate that GROWS the table moves // it, which this function has already done by the time it returns. BackendTextureObject* ResolveTextureTwin(MG_Pipe::MGPipeHandle res); - // ---- P5e SEAM (MG_Remote/CONTRACT-P5E.md §4.2, §5.2; declared by c0e, bodied by + // ---- P5e SEAM (docs/archive/contracts/CONTRACT-P5E.md §4.2, §5.2; declared by c0e, bodied by // id/tx2) -------------------------------------------------------------------------- // // EVERY DRAW-PATH TEXTURE ENTRY, BY HANDLE. The caller holds a Texture handle - a @@ -2084,7 +2084,7 @@ namespace MobileGL::MG_Backend::DirectGLES { // glCopyImageSubData passes: it tries FollowCopyImageInStagedStore first and marks the store // itself when that fails. void NoteDriverSideTextureWriteByHandle(MG_Pipe::MGPipeHandle texture, Bool storeFollowsTheWrite = false); - // P8-E (notes/p8/E.md): make glCopyImageSubData's texel-block move in the server's staged + // P8-E (docs/archive/notes/p8/E.md): make glCopyImageSubData's texel-block move in the server's staged // store too (StagedTextureStore::FollowCopy), so the destination level's bytes stay its // content. Box in each image's own texel grid. False when the store cannot follow: a cube // map or 1D array endpoint (copy-image puts faces / layers on z, the store does not), a view, @@ -2143,7 +2143,7 @@ namespace MobileGL::MG_Backend::DirectGLES { ~BackendFramebufferObject(); BackendFramebufferObject(const BackendFramebufferObject&) = delete; BackendFramebufferObject& operator=(const BackendFramebufferObject&) = delete; - // P5e SEAM (MG_Remote/CONTRACT-P5E.md §5.4; declared by c0e, bodied by fb): the same + // P5e SEAM (docs/archive/contracts/CONTRACT-P5E.md §5.4; declared by c0e, bodied by fb): the same // sync keyed on the framebuffer HANDLE. The record's eleven surfaces ARE the point // set - the emitter refuses a point at or above the wire width - so the attachment // walk needs no frontend FramebufferObject and no m_pushedSyncHandle handshake: the @@ -3143,7 +3143,7 @@ namespace MobileGL::MG_Backend::DirectGLES { }; ImageFormatBakeInputs CollectImageFormatBakeInputs(const ProgramBuildSource& src); - // ---- P5e SEAM (MG_Remote/CONTRACT-P5E.md §4.2, §5.5; declared by c0e, bodied by + // ---- P5e SEAM (docs/archive/contracts/CONTRACT-P5E.md §4.2, §5.5; declared by c0e, bodied by // id/pg) --------------------------------------------------------------------------- // // THE PROGRAM TWIN, RESOLVED FROM MGPipeApplierState::DrawProgram / DispatchProgram / diff --git a/MobileGL/MG_Backend/DirectGLES/WireTextureReadback.inc b/MobileGL/MG_Backend/DirectGLES/WireTextureReadback.inc index 45a3f914..f5b1d29c 100644 --- a/MobileGL/MG_Backend/DirectGLES/WireTextureReadback.inc +++ b/MobileGL/MG_Backend/DirectGLES/WireTextureReadback.inc @@ -327,7 +327,7 @@ return width == extent.x() && height == extent.y() && (!layered || depth == extent.z()); } - // P8-E (notes/p8/E.md). MGITEST_ESPRYT_REFUSE_TEXTURE_READBACK_EXTENT=x, READ BY THE SERVER: + // P8-E (docs/archive/notes/p8/E.md). MGITEST_ESPRYT_REFUSE_TEXTURE_READBACK_EXTENT=x, READ BY THE SERVER: // a colour level of exactly that extent is treated as one the driver refused to attach - what an // Adreno does for RGB16 and the 16-bit SNORM formats, and what no host driver can be made to do. // Scoped by the extent so the tcp lane's shared supervisor can carry it for the whole lane: only diff --git a/MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp b/MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp index 3f1a0e6a..885bec90 100644 --- a/MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp @@ -73,7 +73,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // (MG_Remote::Client::EmitObjectDeathRecord, CONTRACT-P5C §5.2). // // WHY THAT MATTERS, measured rather than argued (package L's probe, - // notes/p7/magma-two-process-first-run.md §6): under SPAWN the client process has no + // docs/archive/notes/p7/magma-two-process-first-run.md §6): under SPAWN the client process has no // DirectVulkan backend at all, so InstallClientWireTables' own emitter already // answered the notice and CtWireScenario's two death cases PASSED. Under INPROC the // server role's backend is a thread of this process, Transport is Split rather than @@ -247,7 +247,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // SPIRV-Reflect rebuild and `ClearProgramResourceCaches`, verbatim; only this build drops // them - and with them the rehash hazard the ordering comment below the block-binding // setter documents. Retiring the pull half is the day the member stops needing its guard, - // which is a G1/P13 decision and not a wave-2 one; recorded in notes/p7/magma-c.md. + // which is a G1/P13 decision and not a wave-2 one; recorded in docs/archive/notes/p7/magma-c.md. void ClearProgramResourceCaches() { // Nothing to clear: there is no cache in this build. Kept as an entry point so // BackendObject_DirectVulkan's two EGL-teardown call sites stay statement for diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp index 3951960f..48488a1f 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp @@ -811,7 +811,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // is not the answer either: the transient arena carries no // {UNIFORM,STORAGE}_TEXEL_BUFFER usage (VkBufferManager::InitializeTransientArenas), // so no VkBufferView can be made over it, and widening a shared per-frame - // allocation to buy an unreachable path is the wrong trade. See notes/p7/magma-a.md. + // allocation to buy an unreachable path is the wrong trade. See docs/archive/notes/p7/magma-a.md. return writable ? false : placeholder(); } VkBufferViewCreateInfo viewInfo{VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO}; @@ -942,7 +942,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // record that is the draw/dispatch tail in VulkanRenderer.cpp / WireDraw.inc, // which belong to wave-2 packages B and C, not to this file. Losing the // dispatch with a named line in the role log beats returning stale counters - // with no error at all. notes/p7/magma-a.md carries the recipe. + // with no error at all. docs/archive/notes/p7/magma-a.md carries the recipe. MGLOG_E_ONCE("ResolveStorageBufferDescriptor: block '%s' is bound at offset %llu, which is not a " "multiple of this device's minStorageBufferOffsetAlignment (%llu); %s ranges cannot be " "expressed as a descriptor and the shader's writes would be dropped by a read-only " @@ -1114,7 +1114,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, and that is a multiple of four on every // device - but GL 4.6 core 6.1.1 puts no such rule on the SIZE, so `copied` is free // to end mid-word and the Redmi Minecraft run lands there - // (notes/p5f/magma-inproc-fix.md #5). An unaligned start is not reachable through + // (docs/archive/notes/p5f/magma-inproc-fix.md #5). An unaligned start is not reachable through // the public API and only a protocol-level offset can produce one; the sub-word arm // handles it anyway rather than leaving a second shape to trip over later. Both arms // copy the same bytes to the same place: the sub-word one pays one extra transient diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateFactory.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateFactory.cpp index e7a7c11a..00407402 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateFactory.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateFactory.cpp @@ -115,7 +115,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // attribute whose base offsets cannot be added is one Vulkan cannot fetch, the // monolith arm never computes that sum at all, and masking is strictly safer than // a Fatal for a number no application can reach on purpose. Recorded in - // notes/p7/magma-c.md rather than silently reconciled. + // docs/archive/notes/p7/magma-c.md rather than silently reconciled. const auto describe = [&](const char* reason, VkFormat format) { MGLOG_E_ONCE("Magma wire vertex layout: %s location=%u type=%u size=%u normalized=%u integer=%u long=%u bgra=%u stride=%d offset=%llu format=%d bufferWindow=%u+%u activeMask=0x%x", reason, location, attr.Type, static_cast(attr.Size), static_cast(attr.Normalized), diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.h index 92661f6f..0fd9f5c2 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureManager.h @@ -593,7 +593,7 @@ public: void MarkWireTextureGpuWritten(MG_Pipe::MGPipeHandle handle, Uint32 mipLevel, Uint32 baseArrayLayer = 0, Uint32 layerCount = 1); - // SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md): a server shared image's + // SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md): a server shared image's // AHardwareBuffer bound as a single-level 2D colour image on THIS session's device, on dedicated // memory imported from the buffer. Android only (false with `why` elsewhere, or when the device // did not take the AHardwareBuffer extension). The image is born UNDEFINED; whoever uses it diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h index 945c5d87..b75117c4 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h @@ -664,7 +664,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { // and the default draw framebuffer alike. The CAPABILITY decline inside // ResolveWireDepthStencil (a stencil-only resolve without VK_EXT_shader_stencil_export // on a device without VK_KHR_depth_stencil_resolve) is still decided per aspect, after - // colour ran; rule I (a) accepts that (notes/p7/magma-b2.md §2.10). + // colour ran; rule I (a) accepts that (docs/archive/notes/p7/magma-b2.md §2.10). Bool DeclineWireDepthStencilResolveShape(const WireImage& source, const WireImage& destination, GLint sx0, GLint sy0, GLint sx1, GLint sy1, GLint dx0, GLint dy0, GLint dx1, GLint dy1); diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc index b2963cf2..b489b1b9 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc @@ -884,7 +884,7 @@ // (BlitDepthAcrossFormats, shared with the monolith arm) has no flip either. Both // decline by name, each under its OWN once-site (review round 2: one site covered both, // so after the first X decline a cross-format Y decline logged nothing); §6 in - // notes/p7/magma-b2.md carries them. These are declines of a LEGAL blit - GL would + // docs/archive/notes/p7/magma-b2.md carries them. These are declines of a LEGAL blit - GL would // raise no error here - so the INVALID_OPERATION is rule I (a)'s named refusal, not // GL's answer. const Bool mirrorX = (spanX < 0) != (dstSpanX < 0); @@ -1159,7 +1159,7 @@ // so a shader decline (a stencil aspect without VK_EXT_shader_stencil_export, a format // that is not SAMPLED_IMAGE + DEPTH_STENCIL_ATTACHMENT, a failed pipeline create - // WireMultisampleResolve.inc) that lands on the render pass is the resolve most likely - // to read back as zeroes with no GL error. A recorded debt (notes/p7/g5-msrbo.md §4). + // to read back as zeroes with no GL error. A recorded debt (docs/archive/notes/p7/g5-msrbo.md §4). if (resolvedByShader) { MGLOG_I_ONCE("DirectVulkan::ResolveWireDepthStencil: resolved by the shader pass " "(prefer-shader=%d, render-pass arm available=%d)", diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireSharedImage.inc b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireSharedImage.inc index 573932f3..22fd0ffb 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/WireSharedImage.inc +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/WireSharedImage.inc @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). Included by VulkanRenderer.cpp +// SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md). Included by VulkanRenderer.cpp // inside the backend namespace, after WireFramebuffer.inc, whose readback the present side's copy // is modelled on: the same flush, the same write-visibility barrier, the same transition of the // default framebuffer's image. diff --git a/MobileGL/MG_Backend/Init.cpp b/MobileGL/MG_Backend/Init.cpp index e9ff1d95..861ae529 100644 --- a/MobileGL/MG_Backend/Init.cpp +++ b/MobileGL/MG_Backend/Init.cpp @@ -85,7 +85,7 @@ namespace MobileGL::MG_Backend { // (VkBufferManager::RegisterWireResourceOps, VkBufferManager.cpp): under a transport it // owns buffer stores and claims bit 7 (the P4a mask, see ConsumedSubsystemsFor below); // under monolith it registers none and its buffers keep the legacy BufferBackendOps path. - // P5e (MG_Remote/CONTRACT-P5E.md §6.2). THE ONE CONSTANT THE WHOLE PHASE HANGS ON. + // P5e (docs/archive/contracts/CONTRACT-P5E.md §6.2). THE ONE CONSTANT THE WHOLE PHASE HANGS ON. // // kCapRunAheadApply says "this server applies an unbarriered record without reading // client memory". That is only true once EVERY per-draw family reads records instead diff --git a/MobileGL/MG_Backend/Record/RecordVerbSink.cpp b/MobileGL/MG_Backend/Record/RecordVerbSink.cpp index a47f0536..515ecc3e 100644 --- a/MobileGL/MG_Backend/Record/RecordVerbSink.cpp +++ b/MobileGL/MG_Backend/Record/RecordVerbSink.cpp @@ -309,7 +309,7 @@ namespace MobileGL::MG_Record { return false; } - // ---- P9 (W1, MG_Remote/CONTRACT-P9.md §1): the pack-buffer readbacks ------------------------ + // ---- P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): the pack-buffer readbacks ------------------------ // // WHY THE ROWS GO THROUGH THE APPLIER'S BUFFER-WRITE GATE AND NOT THROUGH THE DRIVER'S OWN // PBO READ. Monolith binds the driver buffer as GL_PIXEL_PACK_BUFFER and lets glReadPixels @@ -503,7 +503,7 @@ namespace MobileGL::MG_Record { slot); } - // P5b d1 (MG_Remote/CONTRACT-P5B.md §2 d1): draw_vbo's whole cross product. The record + // P5b d1 (docs/archive/contracts/CONTRACT-P5B.md §2 d1): draw_vbo's whole cross product. The record // carries the GL call verbatim (rule D) and this body reproduces the backend call the // monolith makes for that shape, reading only the record and the backend's own // barrier-pulled state; the twenty GL entry points collapse onto the arms below: @@ -812,7 +812,7 @@ namespace MobileGL::MG_Record { } // ----------------------------------------------------------------------------------- - // P5b: the stubs the four migration packages replace (MG_Remote/CONTRACT-P5B.md). + // P5b: the stubs the four migration packages replace (docs/archive/contracts/CONTRACT-P5B.md). // // Each dies by the GL slot's own name. The record has crossed and been validated by the // codec by the time one of these runs, so the only thing missing is the backend call, and @@ -821,7 +821,7 @@ namespace MobileGL::MG_Record { // in the same words), the call, and a tally the lane can assert moved. // ----------------------------------------------------------------------------------- - // ---- i1 ---- (MG_Remote/CONTRACT-P5B.md §2 i1; landed by package p5b/i1) + // ---- i1 ---- (docs/archive/contracts/CONTRACT-P5B.md §2 i1; landed by package p5b/i1) // // RULE D IN FIVE BODIES. Each reproduces the backend call the monolith makes, from the // record and from server state, and NOTHING ELSE: the backend goes on reading the frontend @@ -973,7 +973,7 @@ namespace MobileGL::MG_Record { return true; } - // ---- t2 ---- (MG_Remote/CONTRACT-P5B.md §2 t2) + // ---- t2 ---- (docs/archive/contracts/CONTRACT-P5B.md §2 t2) // // SIX BODIES, SIX BACKEND CALLS, NO STATE OF THEIR OWN. Rule D: the record IS the call, and // everything the backend reads around it - the capture program, the capture-buffer diff --git a/MobileGL/MG_Backend/Record/RecordVerbSink.h b/MobileGL/MG_Backend/Record/RecordVerbSink.h index 3c30e2ff..93b9c119 100644 --- a/MobileGL/MG_Backend/Record/RecordVerbSink.h +++ b/MobileGL/MG_Backend/Record/RecordVerbSink.h @@ -45,7 +45,7 @@ namespace MobileGL::MG_Record { const MG_Pipe::MGHostSpan* userIndices, const MG_Pipe::MGPDrawIndirect* indirect) override; - // ---- P5b (MG_Remote/CONTRACT-P5B.md): one override per row a migration package owns. + // ---- P5b (docs/archive/contracts/CONTRACT-P5B.md): one override per row a migration package owns. // At the contract commit EVERY BODY BELOW IS A STUB that dies // Fatal{UnmigratedVerb, ""} by the slot's own name - the same line the client's // class-C table raises and the census greps - so a client flipped ahead of its server diff --git a/MobileGL/MG_Backend/Record/StagedTextureStore.h b/MobileGL/MG_Backend/Record/StagedTextureStore.h index 43b53a14..88346ecc 100644 --- a/MobileGL/MG_Backend/Record/StagedTextureStore.h +++ b/MobileGL/MG_Backend/Record/StagedTextureStore.h @@ -524,7 +524,7 @@ namespace MobileGL::MG_Record { EraseSession(m_driverWritten, session); } - // ---- P8-E (docs/Disaggregated/notes/p8/E.md): WHEN THESE BYTES ARE THE LEVEL'S CONTENT ---- + // ---- P8-E (docs/archive/notes/p8/E.md): WHEN THESE BYTES ARE THE LEVEL'S CONTENT ---- // // The store holds what the client uploaded. It is also the only CPU copy of a level the // server has, so a readback the driver refuses (a format the ES driver will not attach - diff --git a/MobileGL/MG_Gbm/MobileGLGbm.cpp b/MobileGL/MG_Gbm/MobileGLGbm.cpp index 537f18ec..d8539ac6 100644 --- a/MobileGL/MG_Gbm/MobileGLGbm.cpp +++ b/MobileGL/MG_Gbm/MobileGLGbm.cpp @@ -8,7 +8,7 @@ // mobilegl_gbm.so: a GBM backend (the loader's backend ABI, gbm_backend_abi.h) whose buffer // objects are MobileGL shared images - colour buffers the MobileGL server allocates and exports -// as dma-bufs (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). Selected with +// as dma-bufs (docs/archive/notes/anland/plan-ahb-dmabuf.md). Selected with // GBM_BACKEND=mobilegl; the loader then finds /mobilegl_gbm.so on its backend path. // // THE DEVICE DESCRIPTOR IS OPAQUE. The fd a gbm_device is created on is only the identity the diff --git a/MobileGL/MG_Impl/EGLImpl/SharedImageFlushPolicy.h b/MobileGL/MG_Impl/EGLImpl/SharedImageFlushPolicy.h index 16e725e4..5aca21da 100644 --- a/MobileGL/MG_Impl/EGLImpl/SharedImageFlushPolicy.h +++ b/MobileGL/MG_Impl/EGLImpl/SharedImageFlushPolicy.h @@ -8,7 +8,7 @@ #pragma once -// WHEN glFlush IS A SHARED-IMAGE BOUNDARY (docs/Disaggregated/notes/anland/plan-x11-gpu.md). +// WHEN glFlush IS A SHARED-IMAGE BOUNDARY (docs/archive/notes/anland/plan-x11-gpu.md). // // A dma-buf producer that renders into its buffers and hands them on after a glFlush (an X // server's glamor committing a window pixmap) relies on implicit sync: whoever samples the buffer diff --git a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp index 48ceaf27..274fa9b3 100644 --- a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp +++ b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp @@ -44,7 +44,7 @@ // call sites below are declarations only, exactly as the frontend's mutators are. #include -// P9 (W1, MG_Remote/CONTRACT-P9.md §1): AN UNPACK SOURCE IS READ FROM THE BUFFER'S CLIENT SHADOW, +// P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): AN UNPACK SOURCE IS READ FROM THE BUFFER'S CLIENT SHADOW, // and under a transport a GPU write into that buffer - a read_pixels_to_buffer, which is how a // glReadPixels into a pack buffer now crosses, or a shader store - reaches the shadow only through // SyncGpuWrites, exactly as glMapBufferRange and glGetBufferSubData already do. Monolith keeps its diff --git a/MobileGL/MG_Impl/GLXImpl/X11Present.h b/MobileGL/MG_Impl/GLXImpl/X11Present.h index e34bd165..14d36a21 100644 --- a/MobileGL/MG_Impl/GLXImpl/X11Present.h +++ b/MobileGL/MG_Impl/GLXImpl/X11Present.h @@ -8,7 +8,7 @@ #pragma once -// GLX WINDOWS PRESENTED THROUGH DRI3 + PRESENT (docs/Disaggregated/notes/anland/plan-x11-gpu.md). +// GLX WINDOWS PRESENTED THROUGH DRI3 + PRESENT (docs/archive/notes/anland/plan-x11-gpu.md). // // A GLX window's frames are drawn by the server into a pbuffer. Instead of reading each frame back // and putting it on the window, the frame is copied GPU-side into one of a few server-allocated diff --git a/MobileGL/MG_Impl/Pipe/PipeFill.cpp b/MobileGL/MG_Impl/Pipe/PipeFill.cpp index 9225e5d5..d7a5beb2 100644 --- a/MobileGL/MG_Impl/Pipe/PipeFill.cpp +++ b/MobileGL/MG_Impl/Pipe/PipeFill.cpp @@ -2407,7 +2407,7 @@ namespace MobileGL::MG_Pipe { // emission gate is the subsystem bit plus the whole-record hash and nothing else. case MGPipeFieldEmitter::SetContextValues: return kMGPipeSubsystemResidualValues; - // P5e's one emitted row (MG_Remote/CONTRACT-P5E.md §5.6): the indexed buffer + // P5e's one emitted row (docs/archive/contracts/CONTRACT-P5E.md §5.6): the indexed buffer // binding points. Written HERE at the contract commit, with the Coverage.def row // and EmittedCallSuppliesTheWholeField's arm beside it, for the reason // kMGPipeWiredSubsystems' block states one paragraph down - this file belongs to @@ -2484,7 +2484,7 @@ namespace MobileGL::MG_Pipe { MG_State::GLState::VertexArrayObject::MAX_VERTEX_ATTRIBS, "the MGPipe vertex-attribute capacity and the frontend's have drifted"); - // P5e (MG_Remote/CONTRACT-P5E.md §1, ruling 10), pinned here for the same reason and in + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1, ruling 10), pinned here for the same reason and in // the same place: this translation unit sees the frontend constant and the MG_Pipe one, // and nothing else does. 84 is what the emitter may describe and what the wire carries; // the BACKEND clamps to the device's real GL_MAX_UNIFORM_BUFFER_BINDINGS, as it does diff --git a/MobileGL/MG_Impl/Pipe/ProgramEmit.h b/MobileGL/MG_Impl/Pipe/ProgramEmit.h index 7a128a83..8a573750 100644 --- a/MobileGL/MG_Impl/Pipe/ProgramEmit.h +++ b/MobileGL/MG_Impl/Pipe/ProgramEmit.h @@ -135,7 +135,7 @@ namespace MobileGL::MG_Pipe { // published ahead of it are wiped by the create that follows. What the draft was // protecting - "a rebuild inside the verb must already see the bindings" - is // satisfied by both records going out at the SAME validate point, ahead of the verb, - // which is what this ordering does. See MG_Remote/CONTRACT-P5E.md §5.5 and the + // which is what this ordering does. See docs/archive/contracts/CONTRACT-P5E.md §5.5 and the // record's own comment in PipeApply.h. if (drawProgram) bytes += EmitProgramBindings(*drawProgram, drawCso); // THE COMPOSITE'S SECOND RELEASE PATH is spoken here, not in a destructor: when the diff --git a/MobileGL/MG_Impl/Pipe/SetHashSuppressor.h b/MobileGL/MG_Impl/Pipe/SetHashSuppressor.h index ca365caa..b5c2f7e0 100644 --- a/MobileGL/MG_Impl/Pipe/SetHashSuppressor.h +++ b/MobileGL/MG_Impl/Pipe/SetHashSuppressor.h @@ -61,7 +61,7 @@ namespace MobileGL::MG_Pipe { SetSamplerViews, // P4a - wired (backend debounce deletion: P3b/P4b) BindSamplerStates, // P4a - wired (backend debounce deletion: P3b/P4b) SetShaderImages, // P4a - wired (backend debounce deletion: P3b/P4b) - // P5e (MG_Remote/CONTRACT-P5E.md §1, ruling 11): THREE SLOTS, ONE PER CLASS, not one + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1, ruling 11): THREE SLOTS, ONE PER CLASS, not one // for the call. set_shader_buffers is emitted per Class (Uniform / ShaderStorage / // AtomicCounter) because the record's own Class field says which binding-point array // it describes - so a single slot would make every emission of one class cancel the diff --git a/MobileGL/MG_Impl/Pipe/ShaderBufferEmit.h b/MobileGL/MG_Impl/Pipe/ShaderBufferEmit.h index 915240c4..3cb06d5d 100644 --- a/MobileGL/MG_Impl/Pipe/ShaderBufferEmit.h +++ b/MobileGL/MG_Impl/Pipe/ShaderBufferEmit.h @@ -10,7 +10,7 @@ #include // The CLIENT side of set_shader_buffers - the INDEXED BUFFER BINDING POINTS (P5e package sb, -// MG_Remote/CONTRACT-P5E.md §5.6, rulings 10 and 11). The call has been in the catalogue since +// docs/archive/contracts/CONTRACT-P5E.md §5.6, rulings 10 and 11). The call has been in the catalogue since // P4a with no emitter, no route and no applier; this file is the emitter half. // // ONE RECORD PER CLASS, THREE CLASSES. MGPShaderBuffers::Class names which binding-point array diff --git a/MobileGL/MG_Impl/Pipe/Tracker.h b/MobileGL/MG_Impl/Pipe/Tracker.h index a68c2a9a..52cf6a6c 100644 --- a/MobileGL/MG_Impl/Pipe/Tracker.h +++ b/MobileGL/MG_Impl/Pipe/Tracker.h @@ -210,7 +210,7 @@ namespace MobileGL::MG_Pipe { case MGPipeDirty::NewSamplers: case MGPipeDirty::NewShaderImages: return kMGPipeSubsystemSamplers; - // P5e's three, one subsystem (MG_Remote/CONTRACT-P5E.md §1): the indexed buffer + // P5e's three, one subsystem (docs/archive/contracts/CONTRACT-P5E.md §1): the indexed buffer // binding points. Bits 15/16/17 have been computed and counted since P2 and have named // no subsystem since - "the remaining bits have no call of their own until P4b", which // the default arm below used to say for them. set_shader_buffers is the call, and @@ -690,7 +690,7 @@ namespace MobileGL::MG_Pipe { now[Index(MGPipeDirty::NewShaderImages)] = MGPipeMixShutter( MGPipeMixShutter(MGPipeMixShutter(textureContent, textureParams), programImages), ctx.GetTextureBindGeneration()); - // ---- bits 15/16/17, REWRITTEN AT P5e (sb, MG_Remote/CONTRACT-P5E.md §5.6) ---- + // ---- bits 15/16/17, REWRITTEN AT P5e (sb, docs/archive/contracts/CONTRACT-P5E.md §5.6) ---- // // ALL THREE USED TO READ `buffers` - the buffer CONTENT aggregate - AND THAT WAS // WRONG IN BOTH DIRECTIONS AT ONCE. Over: any glBufferSubData anywhere fired all diff --git a/MobileGL/MG_Impl/Pipe/Verb/TextureReadbackEmit.inc b/MobileGL/MG_Impl/Pipe/Verb/TextureReadbackEmit.inc index 55a69692..87c07b01 100644 --- a/MobileGL/MG_Impl/Pipe/Verb/TextureReadbackEmit.inc +++ b/MobileGL/MG_Impl/Pipe/Verb/TextureReadbackEmit.inc @@ -52,7 +52,7 @@ "Pixel packing exceeds the destination or its addressable range.")); } - // P9 (W1, MG_Remote/CONTRACT-P9.md §1): MAY A READ INTO THIS PACK BUFFER GO WITHOUT A + // P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): MAY A READ INTO THIS PACK BUFFER GO WITHOUT A // REPLY? The answer is the buffer's handle when it may - the read then crosses as // read_pixels_to_buffer / get_texture_image_to_buffer, lands server-side, and the buffer // is marked GPU-written - and the null handle when the reply-slot form has to carry it. diff --git a/MobileGL/MG_Impl/Pipe/Verb/VerbPort.cpp b/MobileGL/MG_Impl/Pipe/Verb/VerbPort.cpp index 020bd818..7f856b5b 100644 --- a/MobileGL/MG_Impl/Pipe/Verb/VerbPort.cpp +++ b/MobileGL/MG_Impl/Pipe/Verb/VerbPort.cpp @@ -593,7 +593,7 @@ namespace MobileGL::MG_Record { // ============================================================================= // P5b d1 - the nineteen indexed / instanced / multi-draw / indirect draw slots - // (MG_Remote/CONTRACT-P5B.md §2 d1). ONE ROW, draw_vbo (59): the record carries the GL + // (docs/archive/contracts/CONTRACT-P5B.md §2 d1). ONE ROW, draw_vbo (59): the record carries the GL // call verbatim (rule D) beside the handle the P8 form will dispatch on, and the sink // reproduces the backend call the monolith makes. // ============================================================================= @@ -1286,7 +1286,7 @@ namespace MobileGL::MG_Record { // ============================================================================= // CLASS B - P5b package i1: image bind, compute, barriers, copy-image, SSBO block - // (MG_Remote/CONTRACT-P5B.md §2 i1). Seven slots, five wire rows. + // (docs/archive/contracts/CONTRACT-P5B.md §2 i1). Seven slots, five wire rows. // ============================================================================= // // RULE D, WHICH IS WHY THESE ARE SHORT. A P5b verb crosses AS THE CALL: the record @@ -1513,7 +1513,7 @@ namespace MobileGL::MG_Record { } // CLASS B - P5b package t2: the transform-feedback spans, the XFB object bind and the - // tessellation patch parameter (MG_Remote/CONTRACT-P5B.md §2 t2). + // tessellation patch parameter (docs/archive/contracts/CONTRACT-P5B.md §2 t2). // ============================================================================= // // SIX SLOTS, SIX ROWS, AND NOT ONE OF THEM STARTS A SHADER. Every one of the six is a diff --git a/MobileGL/MG_Impl/Pipe/Verb/VerbPort.h b/MobileGL/MG_Impl/Pipe/Verb/VerbPort.h index 0a2b54b4..36806928 100644 --- a/MobileGL/MG_Impl/Pipe/Verb/VerbPort.h +++ b/MobileGL/MG_Impl/Pipe/Verb/VerbPort.h @@ -200,7 +200,7 @@ namespace MobileGL::MG_Record { Bool ReadbackReplyIsComplete(Int32 status, Uint64 replySize, Uint64 expected); // ============================================================================= - // P5b d1 - the draw family's record plan (MG_Remote/CONTRACT-P5B.md §2 d1) + // P5b d1 - the draw family's record plan (docs/archive/contracts/CONTRACT-P5B.md §2 d1) // ============================================================================= // // The nineteen indexed / instanced / multi-draw / indirect entry points all ride draw_vbo diff --git a/MobileGL/MG_Impl/SharedImageApi.h b/MobileGL/MG_Impl/SharedImageApi.h index 4687ae5e..2b7447bc 100644 --- a/MobileGL/MG_Impl/SharedImageApi.h +++ b/MobileGL/MG_Impl/SharedImageApi.h @@ -6,7 +6,7 @@ * SPDX-License-Identifier: LGPL-3.0-only * End of Source File Header */ -/* SHARED IMAGES, AS A C ABI (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). +/* SHARED IMAGES, AS A C ABI (docs/archive/notes/anland/plan-ahb-dmabuf.md). * * libMobileGL.so exports these on Linux (not Android) in split builds, so a component that is not * a GL entry point - the GBM backend (MG_Gbm), above all - can ask the server for an image and diff --git a/MobileGL/MG_IntegrationTest/CMakeLists.txt b/MobileGL/MG_IntegrationTest/CMakeLists.txt index b33ac414..ec6a2a1b 100644 --- a/MobileGL/MG_IntegrationTest/CMakeLists.txt +++ b/MobileGL/MG_IntegrationTest/CMakeLists.txt @@ -2525,7 +2525,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) mgl_itest_register_split_arms("TextureUnitSamplingScenario.*" "") mgl_itest_register_split_arms("TriangleScenario.*" "") mgl_itest_register_split_arms("PersistentCoherentMapScenario.*" "") - # P11 A2 (MG_Remote/CONTRACT-P11.md §2): the >= 16 MiB arena on all three arms. Its tier case + # P11 A2 (docs/archive/contracts/CONTRACT-P11.md §2): the >= 16 MiB arena on all three arms. Its tier case # is declared emulated per entry by SplitLogPaths (T2: every acquisition declines); the mpr and # adopt-tier assertions are registered only in their configured controls. The Magma arms are the # gated `Arena.` block beside `Pbo.` / `Fence.` below, plus the Buffers lane. @@ -2670,14 +2670,14 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # buffer, depth and packed depth/stencil, and glGetTexImage's windowed twin. The Magma arms of # the same cases are the `Band.` block after the Fm lane below. mgl_itest_register_split_arms("BandedReadbackScenario.*" "") - # P9 (W1, MG_Remote/CONTRACT-P9.md §1): the pack-buffer readback crosses as + # P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): the pack-buffer readback crosses as # read_pixels_to_buffer / get_texture_image_to_buffer and is answered by nothing. Six parity # cases (every pack parameter, the map reader, a byte swap, a layered glGetTexImage, an upload # FROM the buffer the read filled, a later write over part of it) and the wire case (no # reply-slot record, one mark per read). The Magma arms are the `Pbo.` block after the Band # block below. mgl_itest_register_split_arms("PackBufferReadbackScenario.*" "") - # P10 (A, MG_Remote/CONTRACT-P10.md §1): fence polls answered from kEventFenceSignaled - the + # P10 (A, docs/archive/contracts/CONTRACT-P10.md §1): fence polls answered from kEventFenceSignaled - the # idiom's poll loops end (with and without the flush bit), a signaled fence's polls cross # nothing, and an idle server still reports a fence that finishes. The Magma arms are the # `Fence.` block beside the `Pbo.` block below. @@ -2920,7 +2920,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) ) endforeach() - # ---- P5b package i1 (MG_Remote/CONTRACT-P5B.md §2 i1) -------------------------------- + # ---- P5b package i1 (docs/archive/contracts/CONTRACT-P5B.md §2 i1) -------------------------------- # # THE LANE CASE THAT PROVES THE RECORDS CROSSED, and it is a RESULT and not a probe (R-16: # a probe may not arm against a stub). Each of these four scenarios asserts a value that @@ -2980,7 +2980,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # # The ROADMAP's `TextureRemintPullScenario`, and it proves the opposite of its name: the # server re-mints from the GPU level and its own staged store, so no pull protocol exists - # (notes/p9/W2-REMINT.md). Espryt's three arms here; the Magma arms are laid by hand in the + # (docs/archive/notes/p9/W2-REMINT.md). Espryt's three arms here; the Magma arms are laid by hand in the # `DirectVulkan..Remint.` block, where the gated Magma flavour lives; both backends' monolith # entries come from the whole-binary discovery. mgl_itest_register_split_arms("TextureRemintPullScenario.*" "") @@ -3039,7 +3039,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # ---- P5b t2: the transform-feedback spans, the XFB object bind, the patch parameter ------- # - # MG_Remote/CONTRACT-P5B.md §2 t2. The three P5 lanes above are the REDUCED PATH's targets + # docs/archive/contracts/CONTRACT-P5B.md §2 t2. The three P5 lanes above are the REDUCED PATH's targets # (a clear, a triangle, a persistent map); these two are the first lane entries whose GREEN # DEPENDS ON A t2 RECORD HAVING CROSSED AND BEEN APPLIED BY THE BACKEND, which is the only # statement a package flipping a verb can make that a unit case cannot: @@ -3084,7 +3084,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # block as the XfbQuery. ones. mgl_itest_register_split_arms("XfbPrimitiveQueryScenario.*" "") - # ---- P5e package vi (MG_Remote/CONTRACT-P5E.md §5.1, ID-82 / ruling 2) -------------------- + # ---- P5e package vi (docs/archive/contracts/CONTRACT-P5E.md §5.1, ID-82 / ruling 2) -------------------- # # Client-memory vertices and indices now cross as owned ordinary buffers. # Keep the original names and private logs; all six scenarios join the full @@ -3253,7 +3253,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # # PLAN-PH-P34B-P7.md 1.2, "门:纹理 / program 场景 split 覆盖". Each candidate was run once # under MOBILEGL_TRANSPORT=inproc on build-split and its FIRST BLOCKER recorded; the row per - # scenario x backend x blocker is in notes/p34b/split-scenario-census.md. What follows is the + # scenario x backend x blocker is in docs/archive/notes/p34b/split-scenario-census.md. What follows is the # result of that census, not a guess: every scenario listed here passed, and every case that # did not is excluded BY NAME below with its blocker. # @@ -3301,7 +3301,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # case that produced no record RED for having nothing to say - which is the rule working, not # a defect. They stay unregistered for that reason and are listed in the census note. - # P8-E (docs/Disaggregated/notes/p8/E.md): glCopyImageSubData into a level the driver will not + # P8-E (docs/archive/notes/p8/E.md): glCopyImageSubData into a level the driver will not # read back, then glGetTexImage. The knob-free cases on Espryt's three arms; Magma's gated arms # are the `DirectVulkan..CopyStore.` entries just below; both monolith entries come from # the whole-binary discovery. @@ -3483,7 +3483,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) ENVIRONMENT "${MGL_ITEST_GLES_SPLIT_STRICT_ENVIRONMENT}" ) - # P8-B: glGenerateMipmap ON ESPRYT'S SERVER (notes/p8/B.md). The window a record names (B1) and + # P8-B: glGenerateMipmap ON ESPRYT'S SERVER (docs/archive/notes/p8/B.md). The window a record names (B1) and # RGB16F / RGB32F (B2) on the three Espryt arms; the Magma control is the gated # `DirectVulkan..Mip.` block beside `Remint.`, and both monoliths come from the ambient # discovery. The FORCED-CPU entries run the three-channel cases with @@ -3713,7 +3713,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) # # Making the tcp lane able to carry these would need the fixture to take a per-case # server environment - a supervisor control, not a ctest property - and that is a debt, - # recorded in notes/p7/magma-b2.md §6. + # recorded in docs/archive/notes/p7/magma-b2.md §6. set(mglItestServerEnvKnobArm TRUE) if(mglItestArm STREQUAL "Tcp") set(mglItestServerEnvKnobArm FALSE) @@ -4158,7 +4158,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) ${mglItestArmProperties} ENVIRONMENT "${mglItestMagmaBandEnvironment}\;MOBILEGL_LOG_FILE_PATH=${CMAKE_CURRENT_BINARY_DIR}/p10-fence${mglItestArmLogTag}-${fenceCase}.log") endforeach() - # P11 A2 (MG_Remote/CONTRACT-P11.md §2): the >= 16 MiB arena on Magma's three arms, in the + # P11 A2 (docs/archive/contracts/CONTRACT-P11.md §2): the >= 16 MiB arena on Magma's three arms, in the # same flavour, declared per arm (mglItestArenaArm above); DirectVulkan.ArenaArm. is its # monolith (adopted) half. foreach(arenaCase IN LISTS MGL_ITEST_ARENA_CASES) @@ -4231,7 +4231,7 @@ endif() # P9 W2: THE TEXTURE RE-MINT ON MAGMA, all three arms, GATED. A storage-usage upgrade recreates # the VkImage and copies the old one into it GPU to GPU (PreserveTextureContentsOnRecreate), so -# no byte comes from the client here either (notes/p9/W2-REMINT.md). The gated band flavour +# no byte comes from the client here either (docs/archive/notes/p9/W2-REMINT.md). The gated band flavour # (role-split state, strict errors, run-ahead), one entry per case for a private log each. if (MOBILEGL_BUILD_DISAGGREGATED) foreach(mglItestArm IN LISTS MGL_ITEST_MAGMA_ARMS) @@ -4493,7 +4493,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) PersistentCoherentMapScenario.AWriteAfterAFrameBoundaryReachesTheNextFramesDraw StorageBufferRegrowScenario.AGrownStoreIsVisibleThroughItsExistingIndexedBinding # P11 A2: the >= 16 MiB arena, the flavour's MGITEST_PERSISTENT_MAP_ARM=emulated - # asserted by its tier case (MG_Remote/CONTRACT-P11.md §2). + # asserted by its tier case (docs/archive/contracts/CONTRACT-P11.md §2). LargeArenaAdoptionScenario.SubDataAfterAnInFlightDrawReachesTheNextDraw LargeArenaAdoptionScenario.RespecifiedVertexArenaKeepsVaoBindings LargeArenaAdoptionScenario.RespecifiedIndexArenaKeepsVaoBinding @@ -4698,7 +4698,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) endforeach() endif() -# P5c ct (MG_Remote/CONTRACT-P5C.md §5): the two control records, split-only source for the +# P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records, split-only source for the # same reason as f1's - the scenario reads the SERVER sink's tallies, which a monolith build # has no symbol for. One block per case with a LOG PATH OF ITS OWN, the F1 pattern: # SplitLogPaths.PrivateAndDistinct fails a lane whose cases share one file, and the death @@ -4920,7 +4920,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) include(${CMAKE_CURRENT_SOURCE_DIR}/P8Coverage.cmake) endif() -# P8-D: the Magma wire arm issues indirect draws natively (docs/Disaggregated/notes/p8/D.md). +# P8-D: the Magma wire arm issues indirect draws natively (docs/archive/notes/p8/D.md). # Public GL, so the source joins the binary unguarded and the ambient `DirectGLES.` / # `DirectVulkan.` monolith discovery runs it too. Split arms: DirectGLES through the registration # macro (which also replays it on Magma's informational tier), Magma's gated tier by hand, all @@ -4955,7 +4955,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) endforeach() endif() -# P8-SE (docs/Disaggregated/notes/p8/SE.md): Espryt split residuals. +# P8-SE (docs/archive/notes/p8/SE.md): Espryt split residuals. if (MOBILEGL_BUILD_DISAGGREGATED) # The default framebuffer's depth/stencil format reaches a spawn / tcp client now (the server # process has no frontend placeholder, and the publish used to return on it before posting), @@ -4993,7 +4993,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED) PipeCatalogue.UnmigratedEmulationSitesMatchTheList PROPERTIES LABELS unit TIMEOUT 60) endif() -# P8-SV: Magma split residuals (docs/Disaggregated/notes/p8/SV.md) - the 3D native mip blit's layer +# P8-SV: Magma split residuals (docs/archive/notes/p8/SV.md) - the 3D native mip blit's layer # count, the 1D depth mip decline, the depth/stencil mip decline's tally row (asserted inside # F1WireScenario) and the wire arm's native glDispatchComputeIndirect. Public GL, so the sources join # the binary unguarded and the ambient `DirectGLES.` / `DirectVulkan.` monolith discovery runs them @@ -5193,7 +5193,7 @@ endif() # THIS IS WHERE THE @P7 REFUSALS LIVE. None of tier 2's scenarios reaches one; the readback # matrices, the same-texture copy shapes and the odd-offset uniform ranges do, and they are in # this set and nowhere else in the disaggregated registry. THE FIRST RUN'S RED LIST IS WHAT -# WAVE 2's CLUSTERS ARE SCHEDULED FROM - see notes/p7/magma-two-process-first-run.md. +# WAVE 2's CLUSTERS ARE SCHEDULED FROM - see docs/archive/notes/p7/magma-two-process-first-run.md. # # IN NO CI GATING STEP, and that is the whole design: a lane that must be green cannot carry a # census. A case leaves this tier for a gated one with the commit that retires its blocker. @@ -5346,7 +5346,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED AND MOBILEGL_PIPE_VERIFY) # (GL error 0x0502 where the decline promises none, or none where it promises one; the # overlap copy writes the level the decline leaves alone) - because Espryt does not decline # those shapes at all. That is a finding about the DirectGLES whole-binary set on split, not - # about verify, and it is recorded in notes/p7/verify-split.md rather than hidden in a green. + # about verify, and it is recorded in docs/archive/notes/p7/verify-split.md rather than hidden in a green. # This lane was NOT the only DirectGLES split lane to reach them: the primary integration job # runs every integration-gpu entry under MOBILEGL_TRANSPORT=inproc, and there the same four # were red in CI (the depth-stencil and overlap pair from run 35781886930, the two blits from diff --git a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt index 35067a42..8f4b47db 100644 --- a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt +++ b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt @@ -31,7 +31,7 @@ # are the monolith-arm and the no-pulled-read scenarios, 4 skips are the two PersistentMapArm- # and two StrictArming-only cases skipping outside their own lanes, all by design). # Entry counts are first-blocker counts: an entry aborts on its FIRST pulled read, so retiring -# a row advances those entries to their next one. See docs/Disaggregated/notes/p5f/f1-report.md. +# a row advances those entries to their next one. See docs/archive/notes/p5f/f1-report.md. # --------------------------------------------------------------------------------------------- # # P5f wave 2: the expected set is empty after fc -> fe -> fm integration. diff --git a/MobileGL/MG_IntegrationTest/P8Coverage.cmake b/MobileGL/MG_IntegrationTest/P8Coverage.cmake index 8b5aafd8..8f32c504 100644 --- a/MobileGL/MG_IntegrationTest/P8Coverage.cmake +++ b/MobileGL/MG_IntegrationTest/P8Coverage.cmake @@ -19,7 +19,7 @@ # monolith DirectGLES. / DirectVulkan. case is on a gated split arm or is named, with a reason # class, in scripts/data/split_coverage_exemptions.txt. Deleting a line below reds it BY NAME. # The per-case census this list was cut from (inproc / spawn / tcp, junit per arm) is -# docs/Disaggregated/notes/p8/A.md. +# docs/archive/notes/p8/A.md. # ---- (a) THE AMBIENT CASES ----------------------------------------------------------------- # @@ -190,7 +190,7 @@ set(MGL_P8A_KNOB_FILTER_WidenedPacked16 "CopyImagePacked16Scenario.*") set(MGL_P8A_KNOB_ENV_WidenedPacked16 "MOBILEGL_ESPRYT_WIDEN_PACKED16_STORAGE=1") # ForcedDs keeps the spelling the existing Split/Spawn DepthStencilReadbackMatrix block uses. The # default-framebuffer case was left out here while it was red on spawn and tcp; P8-SE fixed it -# (notes/p8/SE.md) and it runs under the knob on every arm like the rest. +# (docs/archive/notes/p8/SE.md) and it runs under the knob on every arm like the rest. set(MGL_P8A_KNOB_FILTER_ForcedDs "DepthStencilReadbackScenario.*:DepthStencilReadbackAttachmentShapeScenario.*") set(MGL_P8A_KNOB_ENV_ForcedDs "MOBILEGL_ESPRYT_FORCE_DS_READBACK_EMULATION=1") diff --git a/MobileGL/MG_IntegrationTest/Scenarios/CopyImageStoreReadbackScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/CopyImageStoreReadbackScenario.cpp index f5e22c27..e225a2fd 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/CopyImageStoreReadbackScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/CopyImageStoreReadbackScenario.cpp @@ -7,7 +7,7 @@ // End of Source File Header // // Scenario - glCopyImageSubData INTO A LEVEL THE DRIVER WILL NOT READ BACK (P8-E, -// docs/Disaggregated/notes/p8/E.md). +// docs/archive/notes/p8/E.md). // // The formats are the ones an ES driver keeps as texture-only storage: GL_RGB16 (EXT_texture_norm16 // makes the three-channel spelling sampleable, never colour-renderable) and the 16-bit SNORM family @@ -28,13 +28,13 @@ // (WireTextureReadback.inc, ReadTextureImageWire): a colour level of exactly that extent is // treated as a level the driver refused to attach - what a driver without EXT_texture_norm16 / // EXT_render_snorm does for these formats (an Adreno 750, which has both, reads them all back -// through the GPU; measured in P13), and what llvmpipe can be made to do no other way. The `DirectGLES..StoreRead.` -// entries set it, and this scenario then builds its textures at THAT extent instead of the default -// one - so the knob is scoped by the extent, and the tcp lane's shared supervisor can carry it -// (the TcpServer.Start fixture's ENVIRONMENT) without touching any other entry, this scenario's -// own knob-free tcp entries included. Under the knob every read must still be right, and the -// server log must name the store route - otherwise the entry would be pinning the GPU route a -// second time under a name that claims otherwise. +// through the GPU; measured in P13), and what llvmpipe can be made to do no other way. The +// `DirectGLES..StoreRead.` entries set it, and this scenario then builds its textures at +// THAT extent instead of the default one - so the knob is scoped by the extent, and the tcp +// lane's shared supervisor can carry it (the TcpServer.Start fixture's ENVIRONMENT) without +// touching any other entry, this scenario's own knob-free tcp entries included. Under the knob +// every read must still be right, and the server log must name the store route - otherwise the +// entry would be pinning the GPU route a second time under a name that claims otherwise. #include #include diff --git a/MobileGL/MG_IntegrationTest/Scenarios/CtWireScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/CtWireScenario.cpp index e37122e3..5fd086d5 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/CtWireScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/CtWireScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P5c ct (MG_Remote/CONTRACT-P5C.md §5): the two control records, end to end over inproc. +// P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records, end to end over inproc. // // applier_reset (§5.1): this process's first validate primes the pipe tracker, and the // FreshlyPrimed edge is the record's producer (MG_Impl/Pipe/PipeFill.cpp). What the scenario @@ -155,7 +155,7 @@ namespace { // (DirectVulkan.cpp, CONTRACT-P7 §5.5) and emits the same `object_death`. Package L // measured that the SPAWN arm already passed once the WireTables install condition // went backend-agnostic and that the INPROC arm failed here with `deaths` 0 vs 0 - // (notes/p7/magma-two-process-first-run.md §6); the table is what closes the inproc + // (docs/archive/notes/p7/magma-two-process-first-run.md §6); the table is what closes the inproc // half, and this case is the gate on it. It is also the RED-ONCE for that table: with // the install site short-circuited, both cases red on the two EXPECT_GT below. const GLubyte red[4] = {255, 0, 0, 255}; @@ -259,7 +259,7 @@ namespace { // "A SPLIT BUILD RUNS AT TIER T2 AND DECLINES EVERY ACQUISITION, ALWAYS"; T0/T1 are // unimplemented, refused by name at the handshake since P11 A1). So the capability is wired // AHEAD of its consumer on purpose, and `rsd=` on the PipeStats line is the counter that - // will show the records the day P11 lands a tier that adopts. See notes/p7/magma-c.md. + // will show the records the day P11 lands a tier that adopts. See docs/archive/notes/p7/magma-c.md. TEST_F(CtWireScenario, TheServerPublishesTheResidentSubDataCapabilityFromItsOwnTable) { if (!Ready()) return; // A REAL WORKLOAD FIRST, and it is not decoration: ScenarioFixture's arming rule diff --git a/MobileGL/MG_IntegrationTest/Scenarios/DepthStencilReadbackMatrixScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/DepthStencilReadbackMatrixScenario.cpp index 724d4b67..6e0b2e13 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/DepthStencilReadbackMatrixScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/DepthStencilReadbackMatrixScenario.cpp @@ -534,7 +534,7 @@ namespace MGITest { // THE CASE IS ARMED ON THE MAGMA WIRE ARM ONLY, and the two gates below say which of the // other arms that discover it (the suite is registered whole on the monolith DirectVulkan // arm and on every DirectGLES arm) owe this picture and do not yet produce it. Both are - // recorded debts (notes/p7/magma-b2.md §6), not agreements with the wrong answer: + // recorded debts (docs/archive/notes/p7/magma-b2.md §6), not agreements with the wrong answer: // - Espryt (DirectGLES, monolith and split alike): the flipped resolve writes nothing and // raises no error, and the scaled one raises no error either. P3b/P4b. // - the monolith DirectVulkan arm: `VulkanRenderer.cpp` refuses a depth blit with a @@ -560,17 +560,19 @@ namespace MGITest { TEST_F(DepthStencilReadbackMatrixScenario, AFlippedMultisampleResolveMirrorsTheBandsAndAScaleDeclines) { if (!Ready()) return; if (Gl().BackendName() != "DirectVulkan") { - GTEST_SKIP() << "Espryt (" << Gl().BackendName() << ") does not produce this picture yet: a " + GTEST_SKIP() << "Espryt (" << Gl().BackendName() + << ") does not produce this picture yet: a " "flipped multisample depth resolve writes nothing with no error and a scaled " - "one raises no INVALID_OPERATION - a P3b/P4b debt (notes/p7/magma-b2.md §6)"; + "one raises no INVALID_OPERATION - a P3b/P4b debt (docs/archive/notes/p7/magma-b2.md §6)"; } if (!PeekSplitRuntime().transportResolved) { - GTEST_SKIP() << "the monolith DirectVulkan transport (this process resolved no split " - "transport, so BlitFramebuffer takes the monolith arm) refuses a flipped " - "depth blit (\"depth blits with flipped rectangles are not supported yet\", " - "destination untouched, no error) and scales a multisample depth blit GL " - "calls INVALID_OPERATION - a wire-vs-monolith divergence where the wire arm " - "is the correct one; the monolith fix is P13/G1-bound (notes/p7/magma-b2.md §6)"; + GTEST_SKIP() + << "the monolith DirectVulkan transport (this process resolved no split " + "transport, so BlitFramebuffer takes the monolith arm) refuses a flipped " + "depth blit (\"depth blits with flipped rectangles are not supported yet\", " + "destination untouched, no error) and scales a multisample depth blit GL " + "calls INVALID_OPERATION - a wire-vs-monolith divergence where the wire arm " + "is the correct one; the monolith fix is P13/G1-bound (docs/archive/notes/p7/magma-b2.md §6)"; } DepthSource multisampled = MakeRenderbufferSource(GL_DEPTH24_STENCIL8, 4); if (!SourceIsUsable()) { diff --git a/MobileGL/MG_IntegrationTest/Scenarios/F1WireScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/F1WireScenario.cpp index 96669c67..4296ff5b 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/F1WireScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/F1WireScenario.cpp @@ -1175,7 +1175,7 @@ TEST_F(F1WireScenario, SubWordUniformBufferRangePadsMissingBytes) { // The sibling of ShortUniformBufferRangePadsMissingBytes whose bound range does NOT // end on a four-byte boundary. That window is what `uniform-buffer-byte-tail` // used to refuse (a named Fatal that took the whole session with it), and it is the - // live boundary the Redmi Minecraft run reported (notes/p5f/magma-inproc-fix.md #5). + // live boundary the Redmi Minecraft run reported (docs/archive/notes/p5f/magma-inproc-fix.md #5). // // Only the SIZE can land off a word here. glBindBufferRange constrains the offset to // GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT and records GL_INVALID_VALUE otherwise diff --git a/MobileGL/MG_IntegrationTest/Scenarios/FencePollScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/FencePollScenario.cpp index a69a61ca..7d640f8d 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/FencePollScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/FencePollScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header // -// P10 (A, MG_Remote/CONTRACT-P10.md §1): FENCE POLLS ANSWERED FROM THE REVERSE CHANNEL. +// P10 (A, docs/archive/contracts/CONTRACT-P10.md §1): FENCE POLLS ANSWERED FROM THE REVERSE CHANNEL. // // A glClientWaitSync / glGetSynciv(GL_SYNC_STATUS) used to be a kWaitReply record: its answer // came back only after the server had applied every record before it, so a poll was a full diff --git a/MobileGL/MG_IntegrationTest/Scenarios/GenerateMipmapServerScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/GenerateMipmapServerScenario.cpp index 379b28bd..b11ec637 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/GenerateMipmapServerScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/GenerateMipmapServerScenario.cpp @@ -7,7 +7,7 @@ // End of Source File Header // // Scenario - glGenerateMipmap ON THE FORMATS ESPRYT DOES NOT HAND STRAIGHT TO THE DRIVER -// (P8-B, docs/Disaggregated/notes/p8/B.md). +// (P8-B, docs/archive/notes/p8/B.md). // // Espryt generates R11F_G11F_B10F and depth chains with per-level blits, and RGB16F / RGB32F // chains outside glGenerateMipmap because ES refuses a three-channel float format there. Until diff --git a/MobileGL/MG_IntegrationTest/Scenarios/IndexedDrawFamilyScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/IndexedDrawFamilyScenario.cpp index 3d4dcb45..64b9a013 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/IndexedDrawFamilyScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/IndexedDrawFamilyScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header // -// Scenario - THE DRAW FAMILY P5b's d1 PUTS ON THE WIRE (MG_Remote/CONTRACT-P5B.md §2 d1): one +// Scenario - THE DRAW FAMILY P5b's d1 PUTS ON THE WIRE (docs/archive/contracts/CONTRACT-P5B.md §2 d1): one // VBO, one EBO, one program, one VAO, and one picture per draw entry point whose correctness // DEPENDS on the fields that entry point adds to draw_vbo. Two quads live in the vertex buffer, // a left one and a right one, and every case draws exactly one of them or both through a diff --git a/MobileGL/MG_IntegrationTest/Scenarios/LargeArenaAdoptionScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/LargeArenaAdoptionScenario.cpp index 4b510973..ba4ee71e 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/LargeArenaAdoptionScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/LargeArenaAdoptionScenario.cpp @@ -611,7 +611,7 @@ void main() { word = 0xC0FFEEu; } << window.line; } - // P11 A2 (MG_Remote/CONTRACT-P11.md §2): WHICH TIER THE ARENA REALLY LANDED IN. The cases above + // P11 A2 (docs/archive/contracts/CONTRACT-P11.md §2): WHICH TIER THE ARENA REALLY LANDED IN. The cases above // are green whether the arena adopted or stayed emulated, so the lane declares the arm // (MGITEST_PERSISTENT_MAP_ARM) and this case asserts it, the way // PersistentCoherentMapScenario.TheMapLandsInTheArmItsLaneDeclares does for a sub-16-MiB map. @@ -665,7 +665,7 @@ void main() { word = 0xC0FFEEu; } ExpectDeclaredArm(declared, "after a frame of draws, an SSBO binding and a dispatch"); } - // P11 A1 (MG_Remote/CONTRACT-P11.md §1): THE TCP LANE WITH MOBILEGL_IPC_ADOPT_TIER=0. A stream + // P11 A1 (docs/archive/contracts/CONTRACT-P11.md §1): THE TCP LANE WITH MOBILEGL_IPC_ADOPT_TIER=0. A stream // data plane has no memory the two sides share, so the client refuses the knob by name at its // handshake - exactly one `Refuse{AdoptTierOnStream, "T0"}` line in its log - and the session // runs T2: the other cases in the same `.AdoptTier0.` lane are green and the arena is emulated. @@ -699,7 +699,7 @@ void main() { word = 0xC0FFEEu; } EXPECT_EQ(log.find("Fatal{UnimplementedAdoptTier"), std::string::npos) << log; } - // P11 B2 (MG_Remote/CONTRACT-P11.md B2): A SHARED-SEGMENT SESSION THAT ASKS T0 AND CANNOT RUN IT. + // P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2): A SHARED-SEGMENT SESSION THAT ASKS T0 AND CANNOT RUN IT. // MOBILEGL_IPC_ADOPT_TIER=0 over shared segments asks T0 in the Hello (A1 made it die at the // handshake; ruling ID-P11-14 made it this). The lane's server cannot grant it - a host has no // AHardwareBuffer, or `.AdoptT0Disallowed.` turned its allow switch off - so it refuses by name diff --git a/MobileGL/MG_IntegrationTest/Scenarios/PackBufferReadbackScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/PackBufferReadbackScenario.cpp index 692f4447..7722112f 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/PackBufferReadbackScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/PackBufferReadbackScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header // -// P9 (W1, MG_Remote/CONTRACT-P9.md §1): READS INTO A PIXEL PACK BUFFER ARE ANSWERED BY NOTHING. +// P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): READS INTO A PIXEL PACK BUFFER ARE ANSWERED BY NOTHING. // // Under a transport a glReadPixels / glGetTexImage whose destination is a bound // GL_PIXEL_PACK_BUFFER no longer waits for its pixels: it crosses as read_pixels_to_buffer / @@ -418,7 +418,7 @@ namespace MGITest { // under a transport a pack-buffer read posts NO reply-slot record and marks the buffer // GPU-written, once per read. MOBILEGL_IPC_PBO_READBACK_SYNC=1 puts the reply form back, // and this case must then fail on both counters - that is its red-once, recorded in - // docs/Disaggregated/notes/p9/. + // docs/archive/notes/p9/. TEST_F(PackBufferReadbackScenario, APackBufferReadPostsNoReplyAndMarksTheBuffer) { if (!Ready()) return; const std::string split = SplitRuntimeSkipReason(); diff --git a/MobileGL/MG_IntegrationTest/Scenarios/TextureRemintPullScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/TextureRemintPullScenario.cpp index 3c1c216a..bc0fb2dc 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/TextureRemintPullScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/TextureRemintPullScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header // -// Scenario - A TEXTURE RE-MINT NEEDS NO BYTE FROM THE CLIENT (P9 W2, notes/p9/W2-REMINT.md). +// Scenario - A TEXTURE RE-MINT NEEDS NO BYTE FROM THE CLIENT (P9 W2, docs/archive/notes/p9/W2-REMINT.md). // // The name is the ROADMAP's: P4a named `texture-remint-pull` the one new stall class of the // split - a texture first bound to an image unit AFTER the backend allocated it has to be diff --git a/MobileGL/MG_IntegrationTest/Scenarios/TextureUploadShapeScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/TextureUploadShapeScenario.cpp index 3a5fef6a..89837ee9 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/TextureUploadShapeScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/TextureUploadShapeScenario.cpp @@ -33,7 +33,7 @@ // table below. // // THE CLIENT EMITTER LANDED TOO, and three places in the tree said otherwise until this commit: -// this header, the CMake probe's comment, and notes/p4a/p4a-results/gates-v1.md's re-run table. +// this header, the CMake probe's comment, and docs/archive/notes/p4a/p4a-results/gates-v1.md's re-run table. // MG_Impl/Pipe/TextureEmit.h's EmitOneLevel increments CallClass::ClientTextureUploadEmissions on // every piece it emits, so `ctu=` is a live reading and `ctu == emit` is a live assertion. The // CMake probe's `else()` arm is kept - it is what makes the arming decision falsifiable - but it diff --git a/MobileGL/MG_IntegrationTest/Scenarios/TextureViewAliasScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/TextureViewAliasScenario.cpp index f06c5e3e..ff7b9e4c 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/TextureViewAliasScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/TextureViewAliasScenario.cpp @@ -30,7 +30,7 @@ // That is exactly the shape SSIM and every ordinary pixel case go green over. // // SO THE CLAIM IS ASSERTED ON BOTH CHANNELS AT ONCE, and neither alone is the gate -// (notes/recovered/wf2/final/part3.md 7.3, "门:新增场景,通过 view 上传、经属主采样(以及反 +// (docs/archive/notes/recovered/wf2/final/part3.md 7.3, "门:新增场景,通过 view 上传、经属主采样(以及反 // 向),跨 draw 边界各一次"): // // PIXELS an upload through one name must be visible through the other name, in the SAME @@ -51,7 +51,7 @@ // MarkStorageDirtyRegion call PipeNoteLevelDirty on ITSELF instead of forwarding to the owner - // i.e. build the two-cursor shape the design rejects. Case (a) then goes red on stale OWNER // texels AND on a SubDataCount that did not move, which is the pair this file exists to make -// simultaneous. Recorded in docs/Disaggregated/notes/p34b/espryt-d2.md. +// simultaneous. Recorded in docs/archive/notes/p34b/espryt-d2.md. // // VIEWS ARE OPT-IN ON ESPRYT. DirectGLES withholds GL_ARB_texture_view unless // MOBILEGL_ESPRYT_ENABLE_TEXTURE_VIEW=1 (ConfigLoader.cpp:213, Config.h:72), so every lane that diff --git a/MobileGL/MG_IntegrationTest/Scenarios/TriangleScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/TriangleScenario.cpp index 971aab1f..e38084c8 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/TriangleScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/TriangleScenario.cpp @@ -13,7 +13,7 @@ // in every lane; the DirectGLES.Split. entries run the same two cases with // MOBILEGL_TRANSPORT=inproc, where the same body is the smallest workload that crosses a real // ring. Four things about its shape are decisions rather than defaults, and all four come from -// the measured verb census (~/w7/notes/p5/verb-census.md): +// the measured verb census (docs/archive/notes/p5/verb-census.md): // // 1. THE DRAW IS VBO-BACKED AND HAS NO CLIENT-ARRAY INDICES. glDrawArrays against a buffer // bound to GL_ARRAY_BUFFER, never glDrawElements with a client pointer. That keeps diff --git a/MobileGL/MG_IntegrationTest/Scenarios/WireIndirectDispatchScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/WireIndirectDispatchScenario.cpp index 03ecfff0..1e286d24 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/WireIndirectDispatchScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/WireIndirectDispatchScenario.cpp @@ -7,7 +7,7 @@ // End of Source File Header // // P8-SV: THE MAGMA WIRE ARM ISSUES glDispatchComputeIndirect FROM THE WIRE STORE, AS THE MONOLITH -// ARM DOES (docs/Disaggregated/notes/p8/SV.md). +// ARM DOES (docs/archive/notes/p8/SV.md). // // Before P8-SV the wire arm read the three group counts through ReadWireBuffer and dispatched them // from the CPU, so a dispatch buffer a shader had written cost a whole-GPU wait per call - the diff --git a/MobileGL/MG_IntegrationTest/Scenarios/WireMipShapeScenario.cpp b/MobileGL/MG_IntegrationTest/Scenarios/WireMipShapeScenario.cpp index 55bec3d7..984d0141 100644 --- a/MobileGL/MG_IntegrationTest/Scenarios/WireMipShapeScenario.cpp +++ b/MobileGL/MG_IntegrationTest/Scenarios/WireMipShapeScenario.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header // -// P8-SV: TWO glGenerateMipmap SHAPES THE MAGMA WIRE ARM GOT WRONG (docs/Disaggregated/notes/p8/SV.md). +// P8-SV: TWO glGenerateMipmap SHAPES THE MAGMA WIRE ARM GOT WRONG (docs/archive/notes/p8/SV.md). // // * A 3D chain through the NATIVE blit. The wire arm passed the level's depth as the blit's // subresource layerCount on an image with one array layer (VUID-vkCmdBlitImage-srcImage-00240, diff --git a/MobileGL/MG_Pipe/Coverage.def b/MobileGL/MG_Pipe/Coverage.def index b5d06dcc..c5a60258 100644 --- a/MobileGL/MG_Pipe/Coverage.def +++ b/MobileGL/MG_Pipe/Coverage.def @@ -237,7 +237,7 @@ // keyed by GL name, they are object lookups rather than verb state, and a forwarded field has // no storage for an emitted call to supply. // -// P5e ADDS ONE ROW, GetBufferBindingPoint -> SetShaderBuffers (MG_Remote/CONTRACT-P5E.md §5.6), +// P5e ADDS ONE ROW, GetBufferBindingPoint -> SetShaderBuffers (docs/archive/contracts/CONTRACT-P5E.md §5.6), // and it is SHAPE-ONLY like P3a's and P4a's six: the field's storage is four raw bases into the // frontend's Array, 4>, and set_shader_buffers carries RESOLVED // {handle, offset, size} ranges per class. The applier has no way to produce a pointer and P5e diff --git a/MobileGL/MG_Pipe/FieldOwnership.def b/MobileGL/MG_Pipe/FieldOwnership.def index eb892b8e..f2cb4935 100644 --- a/MobileGL/MG_Pipe/FieldOwnership.def +++ b/MobileGL/MG_Pipe/FieldOwnership.def @@ -138,7 +138,7 @@ X(ResumeStreamOutput, ResumeTransformFeedback) \ X(GenerateMipmap, GenerateMipmap) \ X(GetTextureImage, GetTextureImage) \ - /* P5b (MG_Remote/CONTRACT-P5B.md). The ONE renamed, non-kCtxVerb boundary the file above */ \ + /* P5b (docs/archive/contracts/CONTRACT-P5B.md). The ONE renamed, non-kCtxVerb boundary the file above */ \ /* said "the phase that emits it adds its row and decides which verb it is": P5b rules */ \ /* resource_copy_region = glCopyImageSubData ONLY; the two framebuffer-sourced copies */ \ /* (CopyTexImage2D / CopyTexSubImage2D) are copy_framebuffer_to_texture below, stamped as */ \ diff --git a/MobileGL/MG_Pipe/MGPipe.h b/MobileGL/MG_Pipe/MGPipe.h index 9ffad1d9..d1c0786a 100644 --- a/MobileGL/MG_Pipe/MGPipe.h +++ b/MobileGL/MG_Pipe/MGPipe.h @@ -54,7 +54,7 @@ namespace MobileGL::MG_Pipe { kOptional = 1u << 5, }; - // P5e (MG_Remote/CONTRACT-P5E.md §2.2). THE FIFTH COLUMN OF PipeCalls.def: what the client + // P5e (docs/archive/contracts/CONTRACT-P5E.md §2.2). THE FIFTH COLUMN OF PipeCalls.def: what the client // does after publishing a record of this call, on a server that publishes // kCapRunAheadApply. Unscoped for MGPipeCallClass's reason - PipeCalls.def spells these as // bare tokens so the same file can be read by the C++ preprocessor and by @@ -143,7 +143,7 @@ namespace MobileGL::MG_Pipe { // the three unit sets inline constexpr Uint64 kMGPipeSubsystemPrograms = 1ull << 12; // shader CSO, draw/dispatch // program, global constants - // P5e's one (MG_Remote/CONTRACT-P5E.md §1). The INDEXED BUFFER BINDING POINTS: the three + // P5e's one (docs/archive/contracts/CONTRACT-P5E.md §1). The INDEXED BUFFER BINDING POINTS: the three // dirty bits NewConstBuffers / NewShaderBuffers / NewSoTargets, the set_shader_buffers // emitter, and the backend's four binding-point walks. It is its own bit and not part of // bit 7's resource family for the reason every other split here has: a UBO/SSBO binding diff --git a/MobileGL/MG_Pipe/MGPipeCallbacks.h b/MobileGL/MG_Pipe/MGPipeCallbacks.h index f9c5db06..c0a8f2c6 100644 --- a/MobileGL/MG_Pipe/MGPipeCallbacks.h +++ b/MobileGL/MG_Pipe/MGPipeCallbacks.h @@ -24,7 +24,7 @@ // OnTexturePullRequest, the server asking the client to re-send a texture's levels after // re-minting it (with op 50 ResourceSubDataComplete as the forward terminator). P9 W2 measured // that no re-mint needs the client: Espryt's server reads the GPU level back and replays its own -// staged store, Magma copies GPU to GPU, on every arm (notes/p9/W2-REMINT.md). So the callback +// staged store, Magma copies GPU to GPU, on every arm (docs/archive/notes/p9/W2-REMINT.md). So the callback // went; op 50 stays in the opcode table as a retired row (opcodes only ever grow) and its decoder // still declines it. // diff --git a/MobileGL/MG_Pipe/MGPipeTypes.h b/MobileGL/MG_Pipe/MGPipeTypes.h index 443a7d77..871d05eb 100644 --- a/MobileGL/MG_Pipe/MGPipeTypes.h +++ b/MobileGL/MG_Pipe/MGPipeTypes.h @@ -133,7 +133,7 @@ namespace MobileGL::MG_Pipe { // buffer. So the answer is the SERVER's table, published as a bit and read through // MGL_BACKEND_SLOT_CAP. The first of the "XFB span family" bits SlotCaps.h predicted. kCapBackendOwnsXfbCapture = 1ull << 9, - // P5e (MG_Remote/CONTRACT-P5E.md §1, §6). THE SERVER APPLIES AN UNBARRIERED RECORD + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1, §6). THE SERVER APPLIES AN UNBARRIERED RECORD // WITHOUT READING CLIENT MEMORY: every object it needs is resolved from a handle the // record or the applier state carries, so the client may publish and move on instead // of waiting for appliedSeq at every verb (rule F). @@ -150,7 +150,7 @@ namespace MobileGL::MG_Pipe { // snapshot may only turn it OFF, because a caps re-run must not be able to make a // lockstep server run-ahead in the middle of a frame. kCapRunAheadApply = 1ull << 10, - // P11 B2 (MG_Remote/CONTRACT-P11.md B2). THIS SESSION MAY RUN T0: the client asked for + // P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2). THIS SESSION MAY RUN T0: the client asked for // it in its Hello (LinkTerms.adoptTier = 0) on a shared-segment plane, the server's // allow switch is on, this platform has AHardwareBuffer, and the backend's POST // self-test of the sustained-lock pattern passed on its live context. Never set in the @@ -1022,7 +1022,7 @@ namespace MobileGL::MG_Pipe { // 0, or Count for the Uniform class under kCapNeedsHostUboBytes (RESERVED, P8-F: 0 today; // a range with nothing to ship carries an empty span, so the two arrays stay aligned). // MGPShaderBuffers::Class's three values, and the ONLY spelling of them (P5e, - // MG_Remote/CONTRACT-P5E.md §1). The payload's comment has named them since P4a and + // docs/archive/contracts/CONTRACT-P5E.md §1). The payload's comment has named them since P4a and // nothing numbered them, so the emitter and the applier were one literal each away from // disagreeing. Uniform is 0 so a zeroed record describes the uniform binding points, which // is the class every workload has. @@ -1624,7 +1624,7 @@ namespace MobileGL::MG_Pipe { }; MGP_ASSERT_POD(MGPReadbackInfo, 64); - // P9 (W1, MG_Remote/CONTRACT-P9.md §1): read_pixels_to_buffer / get_texture_image_to_buffer, + // P9 (W1, docs/archive/contracts/CONTRACT-P9.md §1): read_pixels_to_buffer / get_texture_image_to_buffer, // the two readbacks whose destination is a bound GL_PIXEL_PACK_BUFFER. The destination is // the pack buffer's RESOURCE HANDLE (CONTRACT-P5 row 23: "a PBO destination is a resource // handle and needs no Seg field"), so nothing comes back and the client does not wait: the @@ -1796,7 +1796,7 @@ namespace MobileGL::MG_Pipe { }; MGP_ASSERT_POD(MGPFlush, 8); - // DAMAGE ON THE WIRE (eglSwapBuffersWithDamage, docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md + // DAMAGE ON THE WIRE (eglSwapBuffersWithDamage, docs/archive/notes/anland/plan-ahb-dmabuf.md // item 5). At most kMGPMaxDamageRects rectangles, each x, y, width, height in GL window // coordinates - origin at the bottom-left, as EGL hands them over. A count of 0 means the whole // surface, which is also what every record from a client that sends no damage says. @@ -1819,7 +1819,7 @@ namespace MobileGL::MG_Pipe { MGP_ASSERT_POD(MGPSwapInterval, 8); // --------------------------------------------------------------------------------- - // P5b: the five appended rows (MG_Remote/CONTRACT-P5B.md). APPENDED, never inserted: + // P5b: the five appended rows (docs/archive/contracts/CONTRACT-P5B.md). APPENDED, never inserted: // the wire opcode is a call's position in PipeCalls.def, so these sit after // FenceWaitServer at opcodes 72..76 and no earlier opcode moved. // @@ -1940,7 +1940,7 @@ namespace MobileGL::MG_Pipe { MGP_ASSERT_POD(MGPCopyFromFramebuffer, 48); // --------------------------------------------------------------------------------- - // P5c: the three appended rows (MG_Remote/CONTRACT-P5C.md §5). APPENDED, never inserted: + // P5c: the three appended rows (docs/archive/contracts/CONTRACT-P5C.md §5). APPENDED, never inserted: // applier_reset is opcode 77, object_death opcode 78, and set_context_values (rv, §5.3) // opcode 79 - and no earlier opcode moved. // @@ -1981,7 +1981,7 @@ namespace MobileGL::MG_Pipe { }; MGP_ASSERT_POD(MGPBindContext, 8); - // shared_image = opcode 85 (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). Colour + // shared_image = opcode 85 (docs/archive/notes/anland/plan-ahb-dmabuf.md). Colour // buffers the SERVER allocates and exports as dma-buf descriptors, so one client's frames // reach another client's textures without leaving GPU memory. One row, five operations, all // answered through the reply slot with an MGPSharedImageReply: diff --git a/MobileGL/MG_Pipe/PipeApply.cpp b/MobileGL/MG_Pipe/PipeApply.cpp index 4f56e51a..86234187 100644 --- a/MobileGL/MG_Pipe/PipeApply.cpp +++ b/MobileGL/MG_Pipe/PipeApply.cpp @@ -3583,7 +3583,7 @@ namespace MobileGL::MG_Pipe { } // --------------------------------------------------------------------------------- - // P5e's two entry points, DECLARED BY c0e (MG_Remote/CONTRACT-P5E.md §1) + // P5e's two entry points, DECLARED BY c0e (docs/archive/contracts/CONTRACT-P5E.md §1) // --------------------------------------------------------------------------------- // // set_shader_buffers HAS ITS BODY (package sb); set_program_bindings still refuses by name diff --git a/MobileGL/MG_Pipe/PipeApply.h b/MobileGL/MG_Pipe/PipeApply.h index 5e3fd10b..b4c75764 100644 --- a/MobileGL/MG_Pipe/PipeApply.h +++ b/MobileGL/MG_Pipe/PipeApply.h @@ -11,7 +11,7 @@ #include "MGPipeRenderStateSpans.h" #include "MGPipeTypes.h" -// P5e (MG_Remote/CONTRACT-P5E.md §2.1): MGPipeBarriered takes an MGPWireOp and reads the +// P5e (docs/archive/contracts/CONTRACT-P5E.md §2.1): MGPipeBarriered takes an MGPWireOp and reads the // generated wait-class and call-class tables, all of which live in MGPipe.h. It is a sibling // header in the same layer - MG_Pipe includes MG_Pipe - so the closure does not move. #include "MGPipe.h" @@ -126,7 +126,7 @@ namespace MobileGL::MG_Pipe { void (*TextureRespecify)(MGPipeHandle res, const MGPResourceDesc& desc, const MGPRespecifiedLevel* level); void (*TextureDestroy)(MGPipeHandle res); - // P11 B2 (T0, MG_Remote/CONTRACT-P11.md B2): the two members a backend that can take a + // P11 B2 (T0, docs/archive/contracts/CONTRACT-P11.md B2): the two members a backend that can take a // client's AHardwareBuffer as a store registers. Both null = this backend has no T0 and // every session it serves runs T2. Appended after the texture trio for the same reason. // @@ -296,7 +296,7 @@ namespace MobileGL::MG_Pipe { // DirectGLESBufferDrawProbe pair now pins from both sides. Bool HasLiveHostWrites = false; - // SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). Nonzero: this + // SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md). Nonzero: this // texture's level-0 storage IS the server's shared image of this id (an EGLImage target), // set by shared_image's Attach and cleared by the next respecify that redefines storage. // The backend resolves the id at its texture sync (MG_Remote::Server::SharedImages::Find) @@ -412,7 +412,7 @@ namespace MobileGL::MG_Pipe { // GlobalConstants is the one allocation P4a adds per program, it is bounded by // Desc.GlobalUboSize, and it is NOT on the hot path: set_global_constants is // (ShaderCso, Version) keyed and fires at most once per program per frame. - // P5e (MG_Remote/CONTRACT-P5E.md §1): one entry of set_program_bindings' third tail as the + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1): one entry of set_program_bindings' third tail as the // RECORD owns it. The wire carries the block name as an MGHostSpan into SEG_STAGE, which // retires with the record that named it (rule C), so the applier copies the bytes here // rather than keeping the span: a rebuild happens at the next bind, which may be a frame @@ -1150,7 +1150,7 @@ namespace MobileGL::MG_Pipe { Uint64 MGPipeApplierShareGroupKeyFor(Uint64 sessionKey, Uint64 contextToken); // --------------------------------------------------------------------------------- - // P5e: THE BARRIERED PREDICATE (MG_Remote/CONTRACT-P5E.md §2.1, ruling 3) + // P5e: THE BARRIERED PREDICATE (docs/archive/contracts/CONTRACT-P5E.md §2.1, ruling 3) // --------------------------------------------------------------------------------- // // ONE FUNCTION, TWO CALLERS, AND THAT IS THE WHOLE POINT. The client calls it at the emit diff --git a/MobileGL/MG_Pipe/PipeCalls.def b/MobileGL/MG_Pipe/PipeCalls.def index 1f2ea6db..44337153 100644 --- a/MobileGL/MG_Pipe/PipeCalls.def +++ b/MobileGL/MG_Pipe/PipeCalls.def @@ -17,7 +17,7 @@ // MGPipeContext (plan section 4.3). // Flags : kNone | kNeedsAck | kHasBlob | kVarTail | kHostSpan | kReplySlot | kOptional // WaitClass : kWaitNone | kWaitApplied | kWaitReply | kWaitPresent -// P5e (MG_Remote/CONTRACT-P5E.md section 2.2). WHAT THE CLIENT DOES AFTER IT HAS +// P5e (docs/archive/contracts/CONTRACT-P5E.md section 2.2). WHAT THE CLIENT DOES AFTER IT HAS // PUBLISHED A RECORD OF THIS CALL, on a server that publishes kCapRunAheadApply. // It is A VALUE AND NOT A NEW OP: the opcode order and the flag column are // untouched, and gen_pipe.py emits the column beside kMGPipeCallFlags as @@ -84,7 +84,7 @@ // kCtxVerb 20 3 context-reading transfer calls + the 10 commands, plus the five // P5b-appended verbs (bind_shader_image, patch_parameter, // bind_stream_output, set_storage_block_binding, -// copy_framebuffer_to_texture - MG_Remote/CONTRACT-P5B.md), plus +// copy_framebuffer_to_texture - docs/archive/contracts/CONTRACT-P5B.md), plus // delete_stream_output 1 and read_pixels_to_buffer 1 // total 85 // @@ -123,7 +123,7 @@ // 76 unique records. The catalogue footer's "ShaderStorageBlockBinding is folded into the // reflection archive" is CORRECTED by the row: the archive carries the bindings the // program LINKED with, and glShaderStorageBlockBinding moves one AFTER link. -// - P5c (MG_Remote/CONTRACT-P5C.md §5.1/§5.2) appended TWO more after those (opcodes 77..78), +// - P5c (docs/archive/contracts/CONTRACT-P5C.md §5.1/§5.2) appended TWO more after those (opcodes 77..78), // same rule: applier_reset, the make-current edge's server-side reset that used to be a // GL-thread direct call into server memory, and object_death, the framebuffer family's // FIRST wire delete opcode and the handle-keyed replacement for the death-notice mailbox. @@ -134,7 +134,7 @@ // routed through gMGPipeContext like its seventeen siblings, and under monolith it has no // producer at all - the fields keep coming through the residual fill, byte for byte as // before (G1). 79 unique records. -// - P5e (MG_Remote/CONTRACT-P5E.md section 1) appended ONE more (opcode 80): +// - P5e (docs/archive/contracts/CONTRACT-P5E.md section 1) appended ONE more (opcode 80): // set_program_bindings, the three POST-LINK mutable reflection fields - the uniform-block // bindings, the sampler uniform units and the name-keyed storage-block override map. They // live inside the LinkArtifacts the reflection archive snapshots, and all three move AFTER @@ -143,7 +143,7 @@ // refuses it by name until package pg wires the emitter, exactly as set_shader_buffers has // sat catalogued-and-dead since P4a. 80 unique records. // - delete_stream_output (opcode 81) took the XFB object's deletion across; 81 records. -// - P9 (MG_Remote/CONTRACT-P9.md §1) appended TWO more (opcodes 82..83): +// - P9 (docs/archive/contracts/CONTRACT-P9.md §1) appended TWO more (opcodes 82..83): // read_pixels_to_buffer and get_texture_image_to_buffer, the pack-buffer halves of the two // readbacks, answered by nothing (ID-57's fire-and-forget). Like P5b's five they reach // WireVerbSink only and have no monolith producer. 83 unique records. @@ -294,7 +294,7 @@ /* glWaitSync - WaitSync, the GPU-side wait, distinct from FenceWait's client-side one. */ \ /* TimeoutNs is GL_TIMEOUT_IGNORED by contract. */ \ X(FenceWaitServer, MGPFenceWait, kScreen, kNone, kWaitNone) \ - /* ---- APPENDED BY P5b (MG_Remote/CONTRACT-P5B.md): five GLFunctionsTable verbs the ---- */ \ + /* ---- APPENDED BY P5b (docs/archive/contracts/CONTRACT-P5B.md): five GLFunctionsTable verbs the ---- */ \ /* ---- class-C census measured as first blockers and that no existing row could carry. ---- */ \ /* ---- Opcodes 72..76. Every one reaches WireVerbSink, none has an MGPipeApply* entry ---- */ \ /* ---- point, and under monolith none has a producer - the backend slot is called ---- */ \ @@ -313,7 +313,7 @@ /* glCopyTexImage2D / glCopyTexSubImage2D - a copy whose SOURCE is the read framebuffer, */ \ /* which resource_copy_region (resource -> resource) cannot express. */ \ X(CopyFramebufferToTexture, MGPCopyFromFramebuffer, kCtxVerb, kNone, kWaitNone) \ - /* ---- APPENDED BY P5c (MG_Remote/CONTRACT-P5C.md §5): the two control records. Opcodes ---- */ \ + /* ---- APPENDED BY P5c (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records. Opcodes ---- */ \ /* ---- 77..78. Neither has an MGPipeApply* entry point and neither gains one: both reach ---- */ \ /* ---- WireVerbSink, and under monolith neither has a producer - the reset is a direct ---- */ \ /* ---- MGPipeApplierReset() call and the death notice's mailbox hop, byte for byte as ---- */ \ @@ -340,7 +340,7 @@ /* ---- (PipeFill.cpp gates both the emission and the residual-fill skip on it): under ---- */ \ /* ---- monolith there is no producer and the fields keep being pulled, byte for byte (G1). ---- */ \ X(SetContextValues, MGPContextValues, kCtxState, kNone, kWaitNone) \ - /* ---- P5e (MG_Remote/CONTRACT-P5E.md §1), opcode 80: the post-link binding record. ------ */ \ + /* ---- P5e (docs/archive/contracts/CONTRACT-P5E.md §1), opcode 80: the post-link binding record. ------ */ \ /* ---- THREE POST-LINK MUTABLE REFLECTION FIELDS LIVE INSIDE THE FRONTEND'S LinkArtifacts ---- */ \ /* ---- and therefore inside the archive create_shader_state carries - but glUniformBlock- ---- */ \ /* ---- Binding, glUniform1i on a sampler and glShaderStorageBlockBinding all move one ---- */ \ @@ -355,7 +355,7 @@ X(SetProgramBindings, MGPProgramBindings, kCtxState, kVarTail|kHostSpan, kWaitNone) \ /* Deletion carries the GL argument and its never-reused capture identity. */ \ X(DeleteStreamOutput, MGPStreamOutputBind, kCtxVerb, kNone, kWaitNone) \ - /* ---- APPENDED BY P9 (MG_Remote/CONTRACT-P9.md §1), opcodes 82..83: the pack-buffer ---- */ \ + /* ---- APPENDED BY P9 (docs/archive/contracts/CONTRACT-P9.md §1), opcodes 82..83: the pack-buffer ---- */ \ /* ---- halves of read_pixels and get_texture_image. The reply-slot rows above keep every ---- */ \ /* ---- read into client memory; a read whose destination is a bound PIXEL_PACK_BUFFER ---- */ \ /* ---- crosses as one of these instead, names the buffer by handle, and is answered by ---- */ \ @@ -377,7 +377,7 @@ /* ---- kWaitNone: the apply reads no client memory and the record's placement in the ring ---- */ \ /* ---- is the whole of its ordering. ---- */ \ X(BindContext, MGPBindContext, kScreen, kNone, kWaitNone) \ - /* ---- APPENDED FOR SHARED IMAGES (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md), ---- */ \ + /* ---- APPENDED FOR SHARED IMAGES (docs/archive/notes/anland/plan-ahb-dmabuf.md), ---- */ \ /* ---- opcode 85: allocate / import / release / present / attach of a server-allocated ---- */ \ /* ---- colour buffer exported as a dma-buf. kScreen: the image table is the server's, and ---- */ \ /* ---- present / attach act on the session's current context the way bind_context does. ---- */ \ diff --git a/MobileGL/MG_Pipe/PipeFields.def b/MobileGL/MG_Pipe/PipeFields.def index db129fb2..053c53d2 100644 --- a/MobileGL/MG_Pipe/PipeFields.def +++ b/MobileGL/MG_Pipe/PipeFields.def @@ -145,7 +145,7 @@ #define MGP_FIELDS_MGPStreamOutputTargets(F) \ F(Count) F(Generation) F(ContentHash) -// P5e (MG_Remote/CONTRACT-P5E.md §1): set_program_bindings and its two tail element types. The +// P5e (docs/archive/contracts/CONTRACT-P5E.md §1): set_program_bindings and its two tail element types. The // third tail's element embeds an MGHostSpan, which has a list of its own below, so the // comparator sees the NAME SPAN's four members rather than memcmp'ing a struct with a pointer // and a pad word in it - the exact false-difference MGPSamplerDesc's blob used to produce. @@ -269,7 +269,7 @@ #define MGP_FIELDS_MGPSurfaceInfo(F) \ F(Width) F(Height) F(InternalFormat) F(Samples) F(Layers) F(IsDefault) -// ---- P5b's five appended rows (MG_Remote/CONTRACT-P5B.md). Pad-named members excluded, as +// ---- P5b's five appended rows (docs/archive/contracts/CONTRACT-P5B.md). Pad-named members excluded, as // everywhere; MGPStorageBlockBinding's Name is an MGPBlobRef and recurses into that list. #define MGP_FIELDS_MGPImageBind(F) \ @@ -288,7 +288,7 @@ F(Dst) F(Target) F(Level) F(InternalFormat) F(X) F(Y) F(Width) F(Height) F(XOffset) F(YOffset) \ F(SubImage) -// ---- P5c's two appended rows (MG_Remote/CONTRACT-P5C.md §5). object_death's payload IS +// ---- P5c's two appended rows (docs/archive/contracts/CONTRACT-P5C.md §5). object_death's payload IS // MGPHandleOnly, whose list already exists above; applier_reset's is one field. #define MGP_FIELDS_MGPApplierReset(F) \ diff --git a/MobileGL/MG_Pipe/PipeRoute.h b/MobileGL/MG_Pipe/PipeRoute.h index c9e73425..fd90ba28 100644 --- a/MobileGL/MG_Pipe/PipeRoute.h +++ b/MobileGL/MG_Pipe/PipeRoute.h @@ -146,7 +146,7 @@ namespace MobileGL::MG_Pipe { // explicitly promises it is not ("zero serialisation cost on the // monolith path"). // SetProgramBindings THREE tails in three index spaces plus a PARALLEL NAME ARRAY - // (P5e, MG_Remote/CONTRACT-P5E.md §1/§5.5). One `varTail` + + // (P5e, docs/archive/contracts/CONTRACT-P5E.md §1/§5.5). One `varTail` + // `varTailCount` pair cannot express three runs at all, and the // fourth argument is not a run: the storage-override key is a // `MGHostSpan` on the wire and a plain `const char*` under monolith, diff --git a/MobileGL/MG_Pipe/PipeVerbSink.h b/MobileGL/MG_Pipe/PipeVerbSink.h index 5b2981de..9c3ef867 100644 --- a/MobileGL/MG_Pipe/PipeVerbSink.h +++ b/MobileGL/MG_Pipe/PipeVerbSink.h @@ -139,7 +139,7 @@ namespace MobileGL::MG_Pipe { return false; } - // ---- P5b (MG_Remote/CONTRACT-P5B.md): the rows the four migration packages consume. + // ---- P5b (docs/archive/contracts/CONTRACT-P5B.md): the rows the four migration packages consume. // // Every one below is a GLFunctionsTable verb with NO MGPipeApply* entry point - the // census's correction - so, exactly like the five above, the codec validates and hands @@ -212,7 +212,7 @@ namespace MobileGL::MG_Pipe { return false; } - // ---- P5c (MG_Remote/CONTRACT-P5C.md §5): the two control records, opcodes 77..78. + // ---- P5c (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records, opcodes 77..78. // // Same hand-over shape as the P5b rows: the codec validates the record (a fixed-size // POD, no blob, no tail) and the SERVER'S sink does the work - OnApplierReset runs the @@ -244,7 +244,7 @@ namespace MobileGL::MG_Pipe { return false; } - // ---- shared images, opcode 85 (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). + // ---- shared images, opcode 85 (docs/archive/notes/anland/plan-ahb-dmabuf.md). // `seq` is the record's reply-slot id, which an Import's descriptor names on the aux // socket. True fills `reply`; false is a DECLINED answer. virtual Bool OnSharedImage(const MGPSharedImageOp& op, Uint64 seq, diff --git a/MobileGL/MG_Pipe/generated/PipeWire.inc b/MobileGL/MG_Pipe/generated/PipeWire.inc index acc72f36..0d5163c7 100644 --- a/MobileGL/MG_Pipe/generated/PipeWire.inc +++ b/MobileGL/MG_Pipe/generated/PipeWire.inc @@ -379,7 +379,7 @@ inline constexpr MGPipeCallClass MGPipeCallClassFor(MGPWireOp op) { : kCallClassCount; } -// P5e (MG_Remote/CONTRACT-P5E.md 2.2): THE WAIT CLASS OF EVERY OPCODE, indexed the same way. +// P5e (docs/archive/contracts/CONTRACT-P5E.md 2.2): THE WAIT CLASS OF EVERY OPCODE, indexed the same way. // Index 0 is kWaitClassCount - never a real class - for the flags table's reason: the one // caller that can pass an opcode this catalogue never produced is a decoder holding bytes off // a stream, and it must reach its own Fatal{ProtocolCorruption} rather than a wait decision. diff --git a/MobileGL/MG_Remote/Client/BackendObject_Remote.h b/MobileGL/MG_Remote/Client/BackendObject_Remote.h index 4184ed56..abf7e137 100644 --- a/MobileGL/MG_Remote/Client/BackendObject_Remote.h +++ b/MobileGL/MG_Remote/Client/BackendObject_Remote.h @@ -86,7 +86,7 @@ namespace MobileGL::MG_Remote::Client { void ReleaseEGLSurface(EGLSurface surface) override; void ReleaseEGLResources() override; - // ---- shared images (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) ------------- + // ---- shared images (docs/archive/notes/anland/plan-ahb-dmabuf.md) ------------- Bool AllocateSharedImage(Uint32 width, Uint32 height, Uint32 fourcc, MG_Backend::SharedImageExport* out) override; Bool ImportSharedImage(int fd, Uint32 width, Uint32 height, Uint32 fourcc, Uint64* outId) override; diff --git a/MobileGL/MG_Remote/Client/ClientSession.cpp b/MobileGL/MG_Remote/Client/ClientSession.cpp index a441007d..a8513f83 100644 --- a/MobileGL/MG_Remote/Client/ClientSession.cpp +++ b/MobileGL/MG_Remote/Client/ClientSession.cpp @@ -2994,7 +2994,7 @@ namespace MobileGL::MG_Remote::Client { Transport::ITransport* ClientSession::Control_Plane() { return m_transport; } - // ---- P11 B2: T0 (MG_Remote/CONTRACT-P11.md B2) -------------------------------------------- + // ---- P11 B2: T0 (docs/archive/contracts/CONTRACT-P11.md B2) -------------------------------------------- namespace { Uint64 T0Key(MG_Pipe::MGPipeHandle handle) { diff --git a/MobileGL/MG_Remote/Client/ClientSession.h b/MobileGL/MG_Remote/Client/ClientSession.h index 1635f2d0..f621c761 100644 --- a/MobileGL/MG_Remote/Client/ClientSession.h +++ b/MobileGL/MG_Remote/Client/ClientSession.h @@ -278,7 +278,7 @@ namespace MobileGL::MG_Remote::Client { Uint64* replySizeOut = nullptr, Bool wantReply = true, Bool willReadReply = true); - // ---- P11 B2: T0 (MG_Remote/CONTRACT-P11.md B2) ------------------------------------ + // ---- P11 B2: T0 (docs/archive/contracts/CONTRACT-P11.md B2) ------------------------------------ // // Does this session adopt persistent stores through T0? Decided ONCE, lazily, at the first // map_persistent - the first moment it matters, and one at which the server's first native @@ -294,7 +294,7 @@ namespace MobileGL::MG_Remote::Client { // adopts it as the store's mapping - or null on DECLINED (the store stays T2). void* AdoptPersistentT0(const MG_Pipe::MGPHandleOnly& handle, Uint64 size, const void* seed); void* AdoptPersistentInProcess(const MG_Pipe::MGPHandleOnly& handle, Uint64 size, const void* seed); - // shared_image (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md): emits `op` and waits + // shared_image (docs/archive/notes/anland/plan-ahb-dmabuf.md): emits `op` and waits // for its answer. `sendFd` >= 0 (an Import) is queued on the aux socket for the record's // seq BEFORE the record is published; `receivedFd` non-null (an Allocate) takes the // descriptor the server queued before its answer. False = DECLINED (the server's log says diff --git a/MobileGL/MG_Remote/Client/EmitTables.cpp b/MobileGL/MG_Remote/Client/EmitTables.cpp index 614cfc00..ad353379 100644 --- a/MobileGL/MG_Remote/Client/EmitTables.cpp +++ b/MobileGL/MG_Remote/Client/EmitTables.cpp @@ -15,7 +15,7 @@ // changes class without changing the arithmetic is a build break rather than a behaviour // change nobody reviewed. // -// P5b MOVES SLOTS FROM C TO B, ONE PACKAGE AT A TIME (MG_Remote/CONTRACT-P5B.md §7). The three +// P5b MOVES SLOTS FROM C TO B, ONE PACKAGE AT A TIME (docs/archive/contracts/CONTRACT-P5B.md §7). The three // numbers above are the partition AT THE P5b CONTRACT COMMIT and they are the ones the contract // states; the arithmetic below is what the tree currently has, and the per-package ownership // assertions say which package moved which slot. On this head t2 has landed: class B is 5 + 6 @@ -506,8 +506,8 @@ namespace MobileGL::MG_Remote::Client { // CLASS C - each remaining slot names its first blocker. // ============================================================================= // - // PARTITIONED BY THE P5b PACKAGE THAT OWNS THE FLIP (MG_Remote/CONTRACT-P5B.md, - // ~/w7/notes/p5b/BRIEF-P5B.md), so that four packages migrating in parallel edit four + // PARTITIONED BY THE P5b PACKAGE THAT OWNS THE FLIP (docs/archive/contracts/CONTRACT-P5B.md, + // docs/archive/notes/p5b/BRIEF-P5B.md), so that four packages migrating in parallel edit four // DISJOINT lists and four DISJOINT counts rather than one list and one number. To flip a // slot a package (1) removes its X row from ITS list, (2) assigns the real emitter in // BuildRemoteEmitTable's class-B block, (3) raises ITS kEmittedSlots* by one. The diff --git a/MobileGL/MG_Remote/Client/EmitTables.h b/MobileGL/MG_Remote/Client/EmitTables.h index e969fac5..48ead139 100644 --- a/MobileGL/MG_Remote/Client/EmitTables.h +++ b/MobileGL/MG_Remote/Client/EmitTables.h @@ -25,7 +25,7 @@ // log level, MGLOG_F + std::abort. // // WHICH SLOTS GET A REAL EMITTER IS DECIDED BY THE VERB CENSUS (R-4), not guessed here: -// ~/w7/notes/p5/verb-census.md. CONTRACT-P5.md §7 carries the resulting THREE-CLASS SPLIT and +// docs/archive/notes/p5/verb-census.md. CONTRACT-P5.md §7 carries the resulting THREE-CLASS SPLIT and // it is not to be re-derived: // // A. ANSWERED LOCALLY from the caps mirror, never emitted and never Fatal (R-15) - two diff --git a/MobileGL/MG_Remote/Client/WireTables.cpp b/MobileGL/MG_Remote/Client/WireTables.cpp index 55b354aa..820d7c72 100644 --- a/MobileGL/MG_Remote/Client/WireTables.cpp +++ b/MobileGL/MG_Remote/Client/WireTables.cpp @@ -356,7 +356,7 @@ namespace MobileGL::MG_Remote::Client { // same head for ever. Measured on the device (P12miss): `want=310` on every miss while // `replySeq` climbed from 1,504 to 102,915 - one answer lost to a bounded buffer wedges // the window permanently, and with 4,536 deferred answers that is a certainty rather - // than a risk. notes/p12/CREATE-WINDOW-MEASURED.md section 8 has the numbers and the + // than a risk. docs/archive/notes/p12/CREATE-WINDOW-MEASURED.md section 8 has the numbers and the // shape of the fix (abandon the head: un-latch the object, add it to the suspect list, // and pop - the DECLINE path reused for "unknown"). // @@ -388,7 +388,7 @@ namespace MobileGL::MG_Remote::Client { // the drain above reads them, so a bit keyed on wantReply disables the mechanism it is // meant to enable. The bit has to mean "this answer will never be read" - which is true // of respecify/params/sub-data and false of a windowed create. See - // docs/Disaggregated/notes/p12/CREATE-WINDOW-MEASURED.md section 7, reviewed). + // docs/archive/notes/p12/CREATE-WINDOW-MEASURED.md section 7, reviewed). // // The gates that pin it are in MG_Test/Wire/RemoteClientControls.inc, and they still hold: // the window is a coherent mechanism, it is simply unusable on a frame with this much diff --git a/MobileGL/MG_Remote/Server/AdoptInbox.h b/MobileGL/MG_Remote/Server/AdoptInbox.h index 7d10cd3d..85ded246 100644 --- a/MobileGL/MG_Remote/Server/AdoptInbox.h +++ b/MobileGL/MG_Remote/Server/AdoptInbox.h @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 B2 (MG_Remote/CONTRACT-P11.md B2): the server's end of T0's descriptor channel. +// P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2): the server's end of T0's descriptor channel. // // WHO READS THE FD, AND WHY IT CANNOT DEADLOCK THE APPLY THREAD. The APPLY THREAD reads it, // inline, when it decodes the map_persistent record whose seq the Offer names - nothing else reads diff --git a/MobileGL/MG_Remote/Server/PipeApplier.cpp b/MobileGL/MG_Remote/Server/PipeApplier.cpp index 8493f83a..9ec0fcfb 100644 --- a/MobileGL/MG_Remote/Server/PipeApplier.cpp +++ b/MobileGL/MG_Remote/Server/PipeApplier.cpp @@ -326,8 +326,7 @@ namespace MobileGL::MG_Remote::Server { return true; } - - // ---- P5c ct (MG_Remote/CONTRACT-P5C.md §5) ------------------------------------------ + // ---- P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5) ------------------------------------------ // // TWO CONTROL RECORDS, NO BACKEND TABLE AND NO DECLINE ARM. Neither body consults // Table(): the reset belongs to the applier this process owns, and the death release diff --git a/MobileGL/MG_Remote/Server/PipeApplier.h b/MobileGL/MG_Remote/Server/PipeApplier.h index a159bfe0..6691c188 100644 --- a/MobileGL/MG_Remote/Server/PipeApplier.h +++ b/MobileGL/MG_Remote/Server/PipeApplier.h @@ -184,7 +184,7 @@ namespace MobileGL::MG_Remote::Server { void ReleaseQueries(); Bool OnPresent(const MG_Pipe::MGPPresent& present) override; - // ---- P5c ct (MG_Remote/CONTRACT-P5C.md §5): the two control records ---------------- + // ---- P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records ---------------- // // REAL BODIES FROM THE DAY THE ROWS EXIST, not the P5b stub shape: the rows were // appended by the same package that lands these bodies, so there is no window in @@ -210,7 +210,7 @@ namespace MobileGL::MG_Remote::Server { // rather than a silent bind. Token 0 (the release) is always legal. Bool OnBindContext(const MG_Pipe::MGPBindContext& bind) override; - // shared_image, opcode 85 (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md): the + // shared_image, opcode 85 (docs/archive/notes/anland/plan-ahb-dmabuf.md): the // session's image table (allocate / import / release) and the two GL-ordered operations // (present the default framebuffer into an image, attach an image to a texture). Bool OnSharedImage(const MG_Pipe::MGPSharedImageOp& op, Uint64 seq, diff --git a/MobileGL/MG_Remote/Server/PreAuthGate.h b/MobileGL/MG_Remote/Server/PreAuthGate.h index d0ceeaaf..539879c2 100644 --- a/MobileGL/MG_Remote/Server/PreAuthGate.h +++ b/MobileGL/MG_Remote/Server/PreAuthGate.h @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// PH-7 (5), CONTRACT-P7 §12, notes/p7/ph-f.md §6.4. THE TCP SUPERVISOR AUTHENTICATES BEFORE IT +// PH-7 (5), CONTRACT-P7 §12, docs/archive/notes/p7/ph-f.md §6.4. THE TCP SUPERVISOR AUTHENTICATES BEFORE IT // FORKS, AND AN UNAUTHENTICATED PEER'S WORK IS BOUNDED. // // Two exposures were on the tree before wave 2-F and were recorded by its review: diff --git a/MobileGL/MG_Remote/Server/ServerMain.cpp b/MobileGL/MG_Remote/Server/ServerMain.cpp index 2bbe22e5..a4fef99e 100644 --- a/MobileGL/MG_Remote/Server/ServerMain.cpp +++ b/MobileGL/MG_Remote/Server/ServerMain.cpp @@ -321,7 +321,7 @@ int LeaveBeforeAccept(int sourceFd, DataSource sourceKind, int code) { // P12 (D8). A FORKED SESSION CHILD DIES WITH ITS SUPERVISOR. The child used to outlive a supervisor // that was killed (MobileGLServerService.onDestroy destroys only the supervisor), holding its client -// and its GPU context until that client went away (notes/p65/code-review-findings.md:9). With the +// and its GPU context until that client went away (docs/archive/notes/p65/code-review-findings.md:9). With the // parent-death signal the kernel SIGKILLs it the moment the supervisor goes - and the getppid() // check closes the race of a supervisor that died between fork() and the prctl. Linux (and Android) // only; the signal fires when the THREAD that forked exits, and both fork sites run on the diff --git a/MobileGL/MG_Remote/Server/ServerSession.cpp b/MobileGL/MG_Remote/Server/ServerSession.cpp index 5e57972d..2a8a58b4 100644 --- a/MobileGL/MG_Remote/Server/ServerSession.cpp +++ b/MobileGL/MG_Remote/Server/ServerSession.cpp @@ -1134,7 +1134,7 @@ namespace MobileGL::MG_Remote::Server { std::memory_order_release, std::memory_order_relaxed); } - // ---- P11 B2: T0 (MG_Remote/CONTRACT-P11.md B2) ------------------------------------------ + // ---- P11 B2: T0 (docs/archive/contracts/CONTRACT-P11.md B2) ------------------------------------------ namespace { // THE POST VERDICT IS THE PROCESS'S, like DriverPost's: the driver and the device do not diff --git a/MobileGL/MG_Remote/Server/ServerSession.h b/MobileGL/MG_Remote/Server/ServerSession.h index 8ddc6780..6e4d2f65 100644 --- a/MobileGL/MG_Remote/Server/ServerSession.h +++ b/MobileGL/MG_Remote/Server/ServerSession.h @@ -301,7 +301,7 @@ namespace MobileGL::MG_Remote::Server { Transport::RoleMemorySample SampleMemory() const; void LogMemory(const char* phase) const; - // ---- P11 B2: T0 (MG_Remote/CONTRACT-P11.md B2) -------------------------------------- + // ---- P11 B2: T0 (docs/archive/contracts/CONTRACT-P11.md B2) -------------------------------------- // // The client's Hello asked T0 (LinkTerms.adoptTier = 0 over shared segments). Bool AdoptT0Asked() const { return m_adoptT0Asked; } @@ -337,7 +337,7 @@ namespace MobileGL::MG_Remote::Server { Bool AdoptT0Quiet() const { return m_adoptT0Quiet; } AdoptInbox& T0Inbox() { return m_adoptInbox; } - // ---- shared images (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) ------------- + // ---- shared images (docs/archive/notes/anland/plan-ahb-dmabuf.md) ------------- // The images this session allocated or imported and has not released; emptied when the // session closes. The control transport is where an allocation's descriptor goes out. SharedImages::SessionHolder& SharedImageHolder() { return m_sharedImages; } diff --git a/MobileGL/MG_Remote/Server/SharedImageRegistry.h b/MobileGL/MG_Remote/Server/SharedImageRegistry.h index 21099e42..87d21ab6 100644 --- a/MobileGL/MG_Remote/Server/SharedImageRegistry.h +++ b/MobileGL/MG_Remote/Server/SharedImageRegistry.h @@ -8,7 +8,7 @@ // SHARED IMAGES: colour buffers the server allocates and hands to clients as dma-buf descriptors, // so a frame one client renders can be sampled by another (a Wayland window by its compositor) -// without leaving GPU memory (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md). +// without leaving GPU memory (docs/archive/notes/anland/plan-ahb-dmabuf.md). // // THE SERVER IS THE ALLOCATOR AND THE ONLY IMPORTER. An image is an AHardwareBuffer; what leaves // the process is a duplicate of its first native-handle descriptor, which on every Android kernel @@ -174,7 +174,7 @@ namespace MobileGL::MG_Remote::Server::SharedImages { // Live images, for tests and diagnostics. SizeT LiveCount(); - // ---- synchronisation (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) --------------- + // ---- synchronisation (docs/archive/notes/anland/plan-ahb-dmabuf.md) --------------- // // THE SERVER ORDERS THE IMAGE BETWEEN ITS SESSIONS, the way a kernel's implicit sync would: // a writer publishes the fence of its write and moves on; a reader that finds the generation diff --git a/MobileGL/MG_Remote/Transport/AdoptT0.h b/MobileGL/MG_Remote/Transport/AdoptT0.h index 5200c6d6..4b51a7fc 100644 --- a/MobileGL/MG_Remote/Transport/AdoptT0.h +++ b/MobileGL/MG_Remote/Transport/AdoptT0.h @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 B2 (MG_Remote/CONTRACT-P11.md B2): T0, the zero-copy adoption of a persistently mapped +// P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2): T0, the zero-copy adoption of a persistently mapped // store. The CLIENT allocates the store as an AHardwareBuffer (AHB), keeps a CPU lock on it for // the store's life and uses that pointer as the adopted mapping; the SERVER imports the same // pages as the store's resident twin (Espryt glBufferStorageExternalEXT, Magma diff --git a/MobileGL/MG_Remote/Transport/AdoptTier.h b/MobileGL/MG_Remote/Transport/AdoptTier.h index b3c51183..22b7feb2 100644 --- a/MobileGL/MG_Remote/Transport/AdoptTier.h +++ b/MobileGL/MG_Remote/Transport/AdoptTier.h @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 A1 + B2 (MG_Remote/CONTRACT-P11.md §1 and B2): THE PERSISTENT-MAP ADOPTION TIER IS ASKED +// P11 A1 + B2 (docs/archive/contracts/CONTRACT-P11.md §1 and B2): THE PERSISTENT-MAP ADOPTION TIER IS ASKED // AT THE HANDSHAKE, BY THE SIDE THAT KNOWS THE DATA PLANE, BEFORE THE FIRST map_persistent. // // Tier names follow docs/Disaggregated/design/07: T0 = the client allocates an AHardwareBuffer diff --git a/MobileGL/MG_Remote/Wire/PipeWireCodec.cpp b/MobileGL/MG_Remote/Wire/PipeWireCodec.cpp index 367571a3..1c58881d 100644 --- a/MobileGL/MG_Remote/Wire/PipeWireCodec.cpp +++ b/MobileGL/MG_Remote/Wire/PipeWireCodec.cpp @@ -759,7 +759,7 @@ namespace MobileGL::MG_Remote::Wire { } case MGPWireOp::SetProgramBindings: { // THREE TAILS, THREE COUNTS, THREE INDEX SPACES (P5e, - // MG_Remote/CONTRACT-P5E.md §1): Int32[BlockBindingCount] in GL uniform-block index + // docs/archive/contracts/CONTRACT-P5E.md §1): Int32[BlockBindingCount] in GL uniform-block index // order, MGPProgramSamplerUnit[SamplerUnitCount] ascending by Location, and // MGPProgramStorageOverride[StorageOverrideCount] whose Name is a host span staged // whole - the override map is name-keyed by design. @@ -2138,7 +2138,7 @@ namespace MobileGL::MG_Remote::Wire { return true; case MGPWireOp::SetShaderBuffers: { - // P5e (sb, MG_Remote/CONTRACT-P5E.md §5.6): THE APPLIER ENTRY POINT EXISTS NOW and + // P5e (sb, docs/archive/contracts/CONTRACT-P5E.md §5.6): THE APPLIER ENTRY POINT EXISTS NOW and // this is the row's sink. The paragraph that stood here said "no applier entry // point exists, and P5 does not invent one: the call is on BRIEF §4's exclusion // list" - true for the whole of P5 through P5d, and withdrawn by the phase whose @@ -2175,7 +2175,7 @@ namespace MobileGL::MG_Remote::Wire { return false; case MGPWireOp::SetProgramBindings: { - // P5e, opcode 80 (MG_Remote/CONTRACT-P5E.md §1). c0e wrote the shape check and left + // P5e, opcode 80 (docs/archive/contracts/CONTRACT-P5E.md §1). c0e wrote the shape check and left // the arm declining; PACKAGE pg COMPLETES IT. What the record needs before its // consumer sees it is its shape - the three declared counts against their bounds // and the three-tail arithmetic, both of which MGPipeWireRecordLayout above has @@ -2341,7 +2341,7 @@ namespace MobileGL::MG_Remote::Wire { case MGPWireOp::ResourceSubDataComplete: // RETIRED (P9 W2). It was to be the forward terminator of a SERVER-initiated texture // pull (section 7.1), and no such pull exists: a re-mint reads the GPU level and the - // server's own staged store (notes/p9/W2-REMINT.md). The row stays because opcodes + // server's own staged store (docs/archive/notes/p9/W2-REMINT.md). The row stays because opcodes // only ever grow; no client emits it and a record that claims it is declined. return false; @@ -2522,7 +2522,7 @@ namespace MobileGL::MG_Remote::Wire { m_verbs->OnCopyFramebufferToTexture( *static_cast(payload)); - // ---- P5c's two control records, opcodes 77..78 (MG_Remote/CONTRACT-P5C.md §5) -------- + // ---- P5c's two control records, opcodes 77..78 (docs/archive/contracts/CONTRACT-P5C.md §5) -------- // // Fixed-size PODs the bounds gate has already proved; neither carries a blob, a tail // or a reply, so each arm hands over and stops. ObjectDeath's null-handle refusal is @@ -2546,7 +2546,7 @@ namespace MobileGL::MG_Remote::Wire { return m_verbs != nullptr && m_verbs->OnBindContext(*static_cast(payload)); - // ---- shared images (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md), opcode 85. + // ---- shared images (docs/archive/notes/anland/plan-ahb-dmabuf.md), opcode 85. // // A fixed-size POD; every operation is answered, and a refusal is an answer (DECLINED, // the sink logs why) rather than a fault: an import of a descriptor this server never diff --git a/MobileGL/MG_Remote/Wire/PipeWireCodec.h b/MobileGL/MG_Remote/Wire/PipeWireCodec.h index 038fa823..a2d88749 100644 --- a/MobileGL/MG_Remote/Wire/PipeWireCodec.h +++ b/MobileGL/MG_Remote/Wire/PipeWireCodec.h @@ -8,7 +8,7 @@ // G3: the MGPipe record codec. Owner: package w1. // -// This header is the CONTRACT (MG_Remote/CONTRACT-P5.md) in C++ form; P5's c0 package wrote +// This header is the CONTRACT (docs/archive/contracts/CONTRACT-P5.md) in C++ form; P5's c0 package wrote // it so the other seven could compile on day one against signatures that cannot then move // under them. Every body below is a named Fatal until w1 lands the real one. // @@ -203,7 +203,7 @@ namespace MobileGL::MG_Remote::Wire { // nothing now and is stated now because the phase that arms kDrawHasUserIndices would // otherwise have to discover it as a misaligned load on a device. // THREE TAILS AND NOT TWO SINCE P5e. set_program_bindings (opcode 80, - // MG_Remote/CONTRACT-P5E.md §1) carries the uniform-block bindings, the sampler units and + // docs/archive/contracts/CONTRACT-P5E.md §1) carries the uniform-block bindings, the sampler units and // the storage-override map as three arrays in three different index spaces, so the array // that used to be exactly "the two-tail rows plus draw_vbo's conditional second" grew by // one. Every loop over TailCount below already reads the count rather than the literal 2; diff --git a/MobileGL/MG_State/GLState/BufferState/BufferState.h b/MobileGL/MG_State/GLState/BufferState/BufferState.h index ad0171e6..c0b77303 100644 --- a/MobileGL/MG_State/GLState/BufferState/BufferState.h +++ b/MobileGL/MG_State/GLState/BufferState/BufferState.h @@ -75,7 +75,7 @@ namespace MobileGL::MG_State::GLState { void NoteBufferChanged() { ++m_anyBufferChangeGeneration; } Uint64 GetAnyBufferChangeGeneration() const { return m_anyBufferChangeGeneration; } - // P5e (sb, MG_Remote/CONTRACT-P5E.md §1, §5.6). "DID ANY INDEXED BINDING POINT OF THIS + // P5e (sb, docs/archive/contracts/CONTRACT-P5E.md §1, §5.6). "DID ANY INDEXED BINDING POINT OF THIS // TARGET MOVE" - one counter per BufferBindPointTargets entry, and it is the P4b hole // closed rather than a new convenience. // diff --git a/MobileGL/MG_Test/Pipe/FieldOwnershipTest.cpp b/MobileGL/MG_Test/Pipe/FieldOwnershipTest.cpp index 62c578fe..f5e71e68 100644 --- a/MobileGL/MG_Test/Pipe/FieldOwnershipTest.cpp +++ b/MobileGL/MG_Test/Pipe/FieldOwnershipTest.cpp @@ -298,7 +298,7 @@ TEST_F(FieldOwnershipTest, VerbBoundaryOpsCoverEveryVerbShapedCall) { EXPECT_EQ(MGPipeVerbForWireOp(MGPWireOp::ResumeStreamOutput), MGPipeVerb::ResumeTransformFeedback); EXPECT_EQ(MGPipeVerbForWireOp(MGPWireOp::GenerateMipmap), MGPipeVerb::GenerateMipmap); EXPECT_EQ(MGPipeVerbForWireOp(MGPWireOp::GetTextureImage), MGPipeVerb::GetTextureImage); - // P5b (MG_Remote/CONTRACT-P5B.md): the renamed boundary the file left to "the phase that + // P5b (docs/archive/contracts/CONTRACT-P5B.md): the renamed boundary the file left to "the phase that // emits it" - resource_copy_region is glCopyImageSubData only - and the five appended verbs, // each stamped as the GLFunctionsTable verb it reproduces. copy_framebuffer_to_texture also // carries glCopyTexSubImage2D and stamps CopyTexImage2D for both: one kBlitOrCopy mask. diff --git a/MobileGL/MG_Test/Pipe/PipeCatalogueTest.cpp b/MobileGL/MG_Test/Pipe/PipeCatalogueTest.cpp index aa3708ca..ebe03374 100644 --- a/MobileGL/MG_Test/Pipe/PipeCatalogueTest.cpp +++ b/MobileGL/MG_Test/Pipe/PipeCatalogueTest.cpp @@ -142,10 +142,10 @@ TEST(PipeCatalogue, GeneratedTablesHoldTheWholeCatalogue) { EXPECT_EQ(kMGPipeContextCallCount, kMGPipeCallCount - ClassCount()); // The per-class counts PipeCalls.def documents in its header. - // kScreen is 11 + P5c's applier_reset (MG_Remote/CONTRACT-P5C.md §5.1); kCtxObject is + // kScreen is 11 + P5c's applier_reset (docs/archive/contracts/CONTRACT-P5C.md §5.1); kCtxObject is // 9 + P5c's object_death (§5.2), the framebuffer family's first wire delete opcode. // kCtxState is 17 + P5c rv's set_context_values (§5.3), the residual-value record, + P5e's - // set_program_bindings (MG_Remote/CONTRACT-P5E.md §1), the post-link binding record. + // set_program_bindings (docs/archive/contracts/CONTRACT-P5E.md §1), the post-link binding record. // + P14 S1's bind_context (docs/Disaggregated/design/11-state-ownership.md), the in-band // context binding - a kScreen row for applier_reset's reason: a context switch is a // whole-session edge, not a context-family verb. @@ -153,9 +153,9 @@ TEST(PipeCatalogue, GeneratedTablesHoldTheWholeCatalogue) { EXPECT_EQ(ClassCount(), 8u); EXPECT_EQ(ClassCount(), 13u); EXPECT_EQ(ClassCount(), 19u); - // + P9's get_texture_image_to_buffer (MG_Remote/CONTRACT-P9.md §1), beside get_texture_image. + // + P9's get_texture_image_to_buffer (docs/archive/contracts/CONTRACT-P9.md §1), beside get_texture_image. EXPECT_EQ(ClassCount(), 11u); - // 13 + the five P5b-appended verbs (MG_Remote/CONTRACT-P5B.md): bind_shader_image, + // 13 + the five P5b-appended verbs (docs/archive/contracts/CONTRACT-P5B.md): bind_shader_image, // patch_parameter, bind_stream_output, set_storage_block_binding, // copy_framebuffer_to_texture; + delete_stream_output; + P9's read_pixels_to_buffer. EXPECT_EQ(ClassCount(), 20u); @@ -595,7 +595,7 @@ TEST(PipeCatalogue, LateArrivalsAreAppendedWithoutRenumbering) { EXPECT_EQ(static_cast(MGPWireOp::QueryTimestamp), 69); EXPECT_EQ(static_cast(MGPWireOp::QueryCounter), 70); EXPECT_EQ(static_cast(MGPWireOp::FenceWaitServer), 71); - // P5b (MG_Remote/CONTRACT-P5B.md) appended five verbs AFTER P0's three late arrivals, by + // P5b (docs/archive/contracts/CONTRACT-P5B.md) appended five verbs AFTER P0's three late arrivals, by // the same rule: opcodes 72..76, and nothing before them moved. The five are pinned by // VALUE, because the pin is the protocol - a row inserted ahead of one would silently // re-point every record a P5b package emits at the wrong arm. @@ -604,7 +604,7 @@ TEST(PipeCatalogue, LateArrivalsAreAppendedWithoutRenumbering) { EXPECT_EQ(static_cast(MGPWireOp::BindStreamOutput), 74); EXPECT_EQ(static_cast(MGPWireOp::SetStorageBlockBinding), 75); EXPECT_EQ(static_cast(MGPWireOp::CopyFramebufferToTexture), 76); - // P5c (MG_Remote/CONTRACT-P5C.md §5) appended the two control records AFTER P5b's five, by + // P5c (docs/archive/contracts/CONTRACT-P5C.md §5) appended the two control records AFTER P5b's five, by // the same rule: opcodes 77..78, and nothing before them moved. applier_reset is a kScreen // row (a make-current is a whole-server edge, exactly as FenceWaitServer is a screen call) // and object_death a kCtxObject one; both carry no blob, no reply and no tail. @@ -615,13 +615,13 @@ TEST(PipeCatalogue, LateArrivalsAreAppendedWithoutRenumbering) { // - fixed POD, no blob, no tail, no reply - with an MGPipeApply* entry point, which the two // control records deliberately do not have. EXPECT_EQ(static_cast(MGPWireOp::SetContextValues), 79); - // P5e (MG_Remote/CONTRACT-P5E.md §1) appended ONE more, by the same rule: opcode 80, and + // P5e (docs/archive/contracts/CONTRACT-P5E.md §1) appended ONE more, by the same rule: opcode 80, and // nothing before it moved. set_program_bindings is a kCtxState row with THREE tails and a // host span in the third; it lands with a null route and a sink that refuses it by name, // exactly as set_shader_buffers has sat catalogued-and-dead since P4a. EXPECT_EQ(static_cast(MGPWireOp::SetProgramBindings), 80); EXPECT_EQ(static_cast(MGPWireOp::DeleteStreamOutput), 81); - // P9 (MG_Remote/CONTRACT-P9.md §1) appended the two pack-buffer readbacks, by the same rule: + // P9 (docs/archive/contracts/CONTRACT-P9.md §1) appended the two pack-buffer readbacks, by the same rule: // opcodes 82..83, one payload, no flag at all - no reply slot, no blob, no tail. EXPECT_EQ(static_cast(MGPWireOp::ReadPixelsToBuffer), 82); EXPECT_EQ(static_cast(MGPWireOp::GetTextureImageToBuffer), 83); @@ -630,7 +630,7 @@ TEST(PipeCatalogue, LateArrivalsAreAppendedWithoutRenumbering) { // kScreen control record with the applier_reset shape - one POD, no blob, no tail, no reply // and no MGPipeApply* entry point - so the row beside it is pinned the same way. EXPECT_EQ(static_cast(MGPWireOp::BindContext), 84); - // Shared images (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md) appended opcode 85 by the + // Shared images (docs/archive/notes/anland/plan-ahb-dmabuf.md) appended opcode 85 by the // same rule: a kScreen row with a reply slot - every operation is answered. EXPECT_EQ(static_cast(MGPWireOp::SharedImage), 85); EXPECT_EQ(static_cast(MGPWireOp::kOpCount), 86); @@ -738,7 +738,7 @@ TEST(PipeCatalogue, LateArrivalsAreAppendedWithoutRenumbering) { EXPECT_EQ(kMGPipeClearValueClassUint + 1, kMGPipeClearValueClassCount); } -// ---- P5e: the wait-class column (MG_Remote/CONTRACT-P5E.md §2.2) -------------------------- +// ---- P5e: the wait-class column (docs/archive/contracts/CONTRACT-P5E.md §2.2) -------------------------- // // THE POINT OF THIS CASE IS THAT IT DOES NOT READ PipeCalls.def. Every other statement about // the column - the generated table, the two gates in gen_pipe.py, the static_asserts in @@ -1020,14 +1020,14 @@ TEST(PipeCatalogue, FloatVectorsCompareBitwise) { // a cache that read the padding would mint a fresh CSO per call and the verify lane would // abort at random. TEST(PipeCatalogue, SixValueStructsHaveFieldLists) { - // 72 through P5; P5b appended five call payloads (MG_Remote/CONTRACT-P5B.md: MGPImageBind, + // 72 through P5; P5b appended five call payloads (docs/archive/contracts/CONTRACT-P5B.md: MGPImageBind, // MGPPatchParameter, MGPStreamOutputBind, MGPStorageBlockBinding, MGPCopyFromFramebuffer), // each with its own field list, so the comparator sees every one of them: 77. P5c appended // applier_reset's MGPApplierReset (CONTRACT-P5C.md §5.1) - object_death reuses // MGPHandleOnly, which has had a list since P0 - and rv added set_context_values' // MGPContextValues (§5.3): 79. P5e appended set_program_bindings' MGPProgramBindings AND // the two TAIL ELEMENT types beside it, MGPProgramSamplerUnit and MGPProgramStorageOverride - // (MG_Remote/CONTRACT-P5E.md §1) - the tails are listed for the same reason MGPBufferRange + // (docs/archive/contracts/CONTRACT-P5E.md §1) - the tails are listed for the same reason MGPBufferRange // and MGPVertexAttribWire are: the comparator has to see INTO an element whose members // include an MGHostSpan and a pad word, or it would memcmp the padding: 82. P9 appended the // pack-buffer readbacks' one payload, MGPReadbackToBuffer (CONTRACT-P9.md §1): 83. P14 S1 @@ -1115,7 +1115,7 @@ TEST(PipeCatalogue, PipelineSubsetMembersArePinned) { // than a claim, since the static_assert beside kMGPipeCallbackCount only proves the two agree. // P9 took two more, neither of which ever had a producer: W2 deleted OnTexturePullRequest (a // texture re-mint never needs the client's texels - the server reads the GPU level and its own -// staged store, notes/p9/W2-REMINT.md), and W3 deleted OnLog (the server's log lines are LogLine +// staged store, docs/archive/notes/p9/W2-REMINT.md), and W3 deleted OnLog (the server's log lines are LogLine // frames on the control plane, MG_Remote/Transport/LogForward.h, not reverse records). // // THE CASE NAME STAYS "…HasTenCallbacks" DELIBERATELY. G2/G14 say the ctest name set only ever @@ -1436,18 +1436,18 @@ TEST(PipeCatalogue, EveryUnmigratedEmulationIsNamedOnce) { // new stall class the design admitted. It went because the stall class did: under a transport // the re-mint is the server's own (RequireImageBindableStorageByHandle reads the GPU level and // replays the staged store), the frontend arm that carried the marker is monolith-only, and no - // pull protocol or ResourceSubDataComplete terminator exists (notes/p9/W2-REMINT.md). + // pull protocol or ResourceSubDataComplete terminator exists (docs/archive/notes/p9/W2-REMINT.md). // // AND THE LIST HAD DRIFTED BY ONE UNTIL P8-B. The tree carried a sixth name this list never // had: "generate-mipmap-cpu-filter", the split arm's RGB16F/RGB32F refusal in // GenerateMipmapByRecord. P8-B2 retired it (the server filters its own level, // GenerateThreeChannelFloatMipmapOnServer), and P8-B1 retired the split arm's two // "generate-mipmap-storage" sites (the record's plan is the window). Every name left is on a - // MONOLITH arm - the split arms no longer reach an unmigrated emulation (notes/p8/B.md). + // MONOLITH arm - the split arms no longer reach an unmigrated emulation (docs/archive/notes/p8/B.md). // // THREE, NOT FOUR (P8-SE). "copy-image-shadow-mirror" sat after the mirror's own // `Transport != Monolith` return, so no transport ever reached it and on monolith it was a - // no-op; the call and the name went together (notes/p8/SE.md). + // no-op; the call and the name went together (docs/archive/notes/p8/SE.md). // // NONE (P13 W6). "get-tex-image-shadow" sat in GetTexImageViaShadowConversion, the monolith // frontend arm's shadow readback, and the two mipmap names in that arm's storage grow and CPU diff --git a/MobileGL/MG_Test/Pipe/ShaderBufferEmitTest.cpp b/MobileGL/MG_Test/Pipe/ShaderBufferEmitTest.cpp index 72c16cd8..6d872d0a 100644 --- a/MobileGL/MG_Test/Pipe/ShaderBufferEmitTest.cpp +++ b/MobileGL/MG_Test/Pipe/ShaderBufferEmitTest.cpp @@ -7,7 +7,7 @@ // End of Source File Header // P5e's set_shader_buffers - the INDEXED BUFFER BINDING POINTS - on both sides of the call -// (MG_Remote/CONTRACT-P5E.md §5.6, rulings 10 and 11; package sb). +// (docs/archive/contracts/CONTRACT-P5E.md §5.6, rulings 10 and 11; package sb). // // WHAT THIS SUITE IS FOR. Three properties of this family are invisible in a picture and are // exactly what an optimisation or a merge deletes: diff --git a/MobileGL/MG_Test/Pipe/TrackerTest.cpp b/MobileGL/MG_Test/Pipe/TrackerTest.cpp index ae0ca7b9..5d53efae 100644 --- a/MobileGL/MG_Test/Pipe/TrackerTest.cpp +++ b/MobileGL/MG_Test/Pipe/TrackerTest.cpp @@ -353,7 +353,7 @@ namespace { // the loop above, because "these three, together" is the phase's own scope statement. // // set_stream_output_targets stays UNEMITTED for the whole of P5e (XFB is lockstep by - // escalation, MG_Remote/CONTRACT-P5E.md §5.7) and still names the subsystem, for the + // escalation, docs/archive/contracts/CONTRACT-P5E.md §5.7) and still names the subsystem, for the // same reason: the bit answers "which A/B switch owns this family's legacy arm", not // "is there a record on the wire for me today". EXPECT_EQ(MGPipeSubsystemForDirty(MGPipeDirty::NewConstBuffers), diff --git a/MobileGL/MG_Test/Util/CMakeLists.txt b/MobileGL/MG_Test/Util/CMakeLists.txt index 4c49165b..0fd253cc 100644 --- a/MobileGL/MG_Test/Util/CMakeLists.txt +++ b/MobileGL/MG_Test/Util/CMakeLists.txt @@ -116,7 +116,7 @@ target_link_libraries( ) # GLX presentation through DRI3 + Present against a fake X server and fake shared images, and the -# glFlush-as-shared-image-boundary policy (docs/Disaggregated/notes/anland/plan-x11-gpu.md). +# glFlush-as-shared-image-boundary policy (docs/archive/notes/anland/plan-x11-gpu.md). add_executable( X11PresentTest X11PresentTest.cpp diff --git a/MobileGL/MG_Test/Util/PipeStatsTest.cpp b/MobileGL/MG_Test/Util/PipeStatsTest.cpp index f2b918a6..002cfa79 100644 --- a/MobileGL/MG_Test/Util/PipeStatsTest.cpp +++ b/MobileGL/MG_Test/Util/PipeStatsTest.cpp @@ -567,7 +567,7 @@ namespace { } // P8-D: the Magma wire arm's indirect-draw bracket. Its short names are what the create - // fixtures' measurement (notes/p8/D.md) reads off the server's line, and its long names are + // fixtures' measurement (docs/archive/notes/p8/D.md) reads off the server's line, and its long names are // what Harness/WireIndirectPeek.cpp's readers expect in the JSON dump. TEST_F(PipeStatsTest, WireIndirectCountersPrintInTheirOwnBracket) { PS::AddCalls(PS::CallClass::WireIndirectNativeDraws, 3); diff --git a/MobileGL/MG_Test/Wire/AdoptInboxTest.cpp b/MobileGL/MG_Test/Wire/AdoptInboxTest.cpp index 2586b7af..1e469de8 100644 --- a/MobileGL/MG_Test/Wire/AdoptInboxTest.cpp +++ b/MobileGL/MG_Test/Wire/AdoptInboxTest.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 B2 (MG_Remote/CONTRACT-P11.md B2). Server::AdoptInbox - T0's Offers matched to their +// P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2). Server::AdoptInbox - T0's Offers matched to their // map_persistent records BY SEQ, never by arrival order - over both aux channels the product has: // the in-process queue (inproc) and a real socket pair with SCM_RIGHTS (fork spawn / unix / fd:). // diff --git a/MobileGL/MG_Test/Wire/AdoptTierStreamTest.cpp b/MobileGL/MG_Test/Wire/AdoptTierStreamTest.cpp index f2b6bc1e..afb2aaee 100644 --- a/MobileGL/MG_Test/Wire/AdoptTierStreamTest.cpp +++ b/MobileGL/MG_Test/Wire/AdoptTierStreamTest.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 A1 (MG_Remote/CONTRACT-P11.md §1): MOBILEGL_IPC_ADOPT_TIER=0/1 ON A STREAM DATA PLANE. +// P11 A1 (docs/archive/contracts/CONTRACT-P11.md §1): MOBILEGL_IPC_ADOPT_TIER=0/1 ON A STREAM DATA PLANE. // // Real servers on loopback TCP and forked peers (P12ServerRig.h), so the session is the product's // two-process tcp session and each side reads its OWN knob, as on the tcp lane: diff --git a/MobileGL/MG_Test/Wire/GlamorEglSequenceTest.cpp b/MobileGL/MG_Test/Wire/GlamorEglSequenceTest.cpp index 780d2946..09e752af 100644 --- a/MobileGL/MG_Test/Wire/GlamorEglSequenceTest.cpp +++ b/MobileGL/MG_Test/Wire/GlamorEglSequenceTest.cpp @@ -17,7 +17,7 @@ // EGL_EXT_image_dma_buf_import + _modifiers (dmabuf_capable), XRGB8888/ARGB8888 importable, // eglCreateImageKHR(EGL_LINUX_DMA_BUF_EXT) of a shared image's descriptor. // -// And the implicit-sync flush (docs/Disaggregated/notes/anland/plan-x11-gpu.md): the shared_image +// And the implicit-sync flush (docs/archive/notes/anland/plan-x11-gpu.md): the shared_image // Flush verb the client sends from glFlush is answered by the server. // // Chrome's GPU process on the same kind of display (a GBM one) is the other dma-buf producer, and it diff --git a/MobileGL/MG_Test/Wire/PersistentMapFaultTest.cpp b/MobileGL/MG_Test/Wire/PersistentMapFaultTest.cpp index 7c3e2acc..ae814adc 100644 --- a/MobileGL/MG_Test/Wire/PersistentMapFaultTest.cpp +++ b/MobileGL/MG_Test/Wire/PersistentMapFaultTest.cpp @@ -17,7 +17,7 @@ // other made `address < base` true for EVERY fault, so the handler chained every fault // on a page it had itself protected straight to debuggerd. No host produces a tagged // pointer of its own, so the cases below hand the real predicate the two addresses the -// DEVICE produced (docs/Disaggregated/notes/p7/device-window-1, +// DEVICE produced (docs/archive/notes/p7/device-window-1, // improved-transparency-minecraft-26.3 under inproc: x0 b4000073ac9a5000 against // "fault addr 0x00000073ac9a5000"). That works on any host only because the // normalisation is written without an architecture guard - masking bits 56-63 is the diff --git a/MobileGL/MG_Test/Wire/PipeWireCodecTest.cpp b/MobileGL/MG_Test/Wire/PipeWireCodecTest.cpp index 1739d36c..7f929f5c 100644 --- a/MobileGL/MG_Test/Wire/PipeWireCodecTest.cpp +++ b/MobileGL/MG_Test/Wire/PipeWireCodecTest.cpp @@ -1163,7 +1163,7 @@ TEST_F(PipeWireCodecTest, UserIndexSpanExactlyAtSegmentEndReachesTheSink) { } // ===================================================================================== -// P5b (MG_Remote/CONTRACT-P5B.md): one round trip per row the four migration packages consume +// P5b (docs/archive/contracts/CONTRACT-P5B.md): one round trip per row the four migration packages consume // ===================================================================================== // // The shape is the one above: encode, pump one record through the ring and the decoder, and @@ -1373,7 +1373,7 @@ TEST_F(PipeWireCodecTest, BindStreamOutputReachesTheSink) { } // ===================================================================================== -// P5c ct (MG_Remote/CONTRACT-P5C.md §5): the two control records round-trip +// P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records round-trip // ===================================================================================== // // Same shape as the P5b rows above: encode, pump, and assert the record reached the RIGHT @@ -1440,7 +1440,7 @@ TEST_F(PipeWireCodecTest, ObjectDeathReachesTheSinkWithItsHandleAndKind) { } // ===================================================================================== -// P5c rv (MG_Remote/CONTRACT-P5C.md §5.3): the residual-value record round-trips +// P5c rv (docs/archive/contracts/CONTRACT-P5C.md §5.3): the residual-value record round-trips // ===================================================================================== // // Not a sink row: the decoder's arm runs the REAL applier (MGPipeApplySetContextValues), so @@ -1486,7 +1486,7 @@ TEST_F(PipeWireCodecTest, SetContextValuesRoundTripsIntoPipeInputs) { } // ===================================================================================== -// P5b t2 (MG_Remote/CONTRACT-P5B.md §2 t2). c0b's cases above round-trip each row once; these +// P5b t2 (docs/archive/contracts/CONTRACT-P5B.md §2 t2). c0b's cases above round-trip each row once; these // pin the fields t2's EMITTERS actually fill and the one ordering property the span family has. // ===================================================================================== @@ -3343,9 +3343,8 @@ TEST(FenceWireRoundTrip, MissingConsumerDeclinesWithoutInventingASignaledAnswer) EXPECT_TRUE(wire.Answers().All[0].Bytes.empty()); } - // ===================================================================================== -// P5c ct (MG_Remote/CONTRACT-P5C.md §5): the two control records, through the REAL sink +// P5c ct (docs/archive/contracts/CONTRACT-P5C.md §5): the two control records, through the REAL sink // ===================================================================================== // // The codec cases above pin the bytes and the dispatch with a recording sink; these pin what diff --git a/MobileGL/MG_Test/Wire/RemoteClientAdoptT0.inc b/MobileGL/MG_Test/Wire/RemoteClientAdoptT0.inc index ff7e48ee..ddefd5a5 100644 --- a/MobileGL/MG_Test/Wire/RemoteClientAdoptT0.inc +++ b/MobileGL/MG_Test/Wire/RemoteClientAdoptT0.inc @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// P11 B2 (MG_Remote/CONTRACT-P11.md B2): T0'S PROTOCOL ON THE HOST, over a live inproc session. +// P11 B2 (docs/archive/contracts/CONTRACT-P11.md B2): T0'S PROTOCOL ON THE HOST, over a live inproc session. // // A host has no AHardwareBuffer, so what these prove is the protocol, the negotiation and the // fallback - never GPU correctness, which is the device's (B2's device gates). Two halves: diff --git a/MobileGL/MG_Test/Wire/RemoteClientControls.inc b/MobileGL/MG_Test/Wire/RemoteClientControls.inc index 32bd1bfa..d40d57b1 100644 --- a/MobileGL/MG_Test/Wire/RemoteClientControls.inc +++ b/MobileGL/MG_Test/Wire/RemoteClientControls.inc @@ -1558,7 +1558,7 @@ TEST(RemoteClientControls, ARefusedCreateUnlatchesItsObjectAndItsNextCreateBlock // // THE ASSERTIONS BELOW ARE THEREFORE A DEBT, NOT A SPEC, and they are written to be LOUD about it: // they pin today's numbers so that whoever lands the signal sees THIS case go red and knows the -// repair started working. notes/p12/UNPUBLISH-GUARD-SIGNALS.md §4-§6 has the rest. +// repair started working. docs/archive/notes/p12/UNPUBLISH-GUARD-SIGNALS.md §4-§6 has the rest. TEST(RemoteClientControls, DroppedApplierRecordsAreNotRepairedTodayAndThisCaseIsTheDebt) { const auto child = RunInChild([] { ::setenv("MOBILEGL_PIPE_STATS", "1", 1); diff --git a/MobileGL/MG_Test/Wire/RemoteClientTest.cpp b/MobileGL/MG_Test/Wire/RemoteClientTest.cpp index 741ce644..f9c20c07 100644 --- a/MobileGL/MG_Test/Wire/RemoteClientTest.cpp +++ b/MobileGL/MG_Test/Wire/RemoteClientTest.cpp @@ -398,7 +398,7 @@ TEST(RemoteEmitTable, SetSwapIntervalIsTheServerForwarderAndNotAFatal) { #endif // MGTEST_HAVE_FORK -// ---- P5b package i1 (MG_Remote/CONTRACT-P5B.md §2 i1) ------------------------------------- +// ---- P5b package i1 (docs/archive/contracts/CONTRACT-P5B.md §2 i1) ------------------------------------- TEST(RemoteEmitTable, TheSevenI1SlotsAreClassBAndAreNotTheFatalThunk) { // The census's five measured slots plus the two companions that share their rows. Named @@ -927,7 +927,7 @@ TEST(CapsMirrorTest, TheConsumerBlockDoesNotCollideWithTheFeatureBits) { // ===================================================================================== // ===================================================================================== -// P5b d1: the draw family's record plan (MG_Remote/CONTRACT-P5B.md §2 d1). These drive the +// P5b d1: the draw family's record plan (docs/archive/contracts/CONTRACT-P5B.md §2 d1). These drive the // PRODUCTION derivation the nineteen emitters call - PlanDrawInfo / PlanDrawRange / // PlanDrawIndirect over a RemoteDrawBindings snapshot - so the fields on the wire are pinned // here without a GL context (R-16: the production predicate, not a copy). The bindings' READ @@ -2570,7 +2570,7 @@ TEST(RemoteGuards, ClientPipeInputsFillWithTheApplierIdleIsAllowed) { // =========================================================================================== // P5e (ra) - the wait rule, the present credit and gPipeInputs' ownership -// (MG_Remote/CONTRACT-P5E.md §1, §2.3, §2.4, §3.1, §3.3, §3.5) +// (docs/archive/contracts/CONTRACT-P5E.md §1, §2.3, §2.4, §3.1, §3.3, §3.5) // =========================================================================================== // // EVERY CASE BELOW ARMS RUN-AHEAD BY PUBLISHING THE CAP BIT, because that is the only thing diff --git a/MobileGL/MG_Test/Wire/ServerLoopTest.cpp b/MobileGL/MG_Test/Wire/ServerLoopTest.cpp index 02c0492f..bbb8e964 100644 --- a/MobileGL/MG_Test/Wire/ServerLoopTest.cpp +++ b/MobileGL/MG_Test/Wire/ServerLoopTest.cpp @@ -2534,7 +2534,7 @@ TEST(StagedShadowProductionTest, TheStreamingIdiomThroughAPoolReuseIsUploadedNot // ===================================================================================== // P5b d1: a draw_vbo record of every d1 shape crosses to the REAL ServerVerbSink with its -// fields intact (MG_Remote/CONTRACT-P5B.md §2 d1). No backend object lives in this process, +// fields intact (docs/archive/contracts/CONTRACT-P5B.md §2 d1). No backend object lives in this process, // so each record is DECLINED after the sink has witnessed it - which is exactly the point: // the witness is taken before the backend is consulted, so these cases pin the wire's fields // and not a backend call. The emitter half (GL args -> these fields) is RemoteClientTest's diff --git a/MobileGL/MG_Test/Wire/SessionTest.cpp b/MobileGL/MG_Test/Wire/SessionTest.cpp index 209aa996..30feb673 100644 --- a/MobileGL/MG_Test/Wire/SessionTest.cpp +++ b/MobileGL/MG_Test/Wire/SessionTest.cpp @@ -574,7 +574,7 @@ TEST(SessionTest, PresentAckSerialIsWaitedOnWithGreaterOrEqualAndWakesThroughThe } // --------------------------------------------------------------------------- -// P5e (ra) - SEG_EVENT flow control (MG_Remote/CONTRACT-P5E.md §2.6) +// P5e (ra) - SEG_EVENT flow control (docs/archive/contracts/CONTRACT-P5E.md §2.6) // --------------------------------------------------------------------------- // // THE DEADLOCK THE CONTRACT ARGUES AWAY HAS TWO HALVES AND THIS IS THE FIRST. A run-ahead diff --git a/MobileGL/MG_Test/Wire/SharedImageTest.cpp b/MobileGL/MG_Test/Wire/SharedImageTest.cpp index de4c3b8e..da2d37fd 100644 --- a/MobileGL/MG_Test/Wire/SharedImageTest.cpp +++ b/MobileGL/MG_Test/Wire/SharedImageTest.cpp @@ -6,7 +6,7 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -// Shared images (docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md): the server's registry, a +// Shared images (docs/archive/notes/anland/plan-ahb-dmabuf.md): the server's registry, a // session's references, and the aux-socket inbox that carries an import's descriptor beside T0's // Offers. On a host the image memory is a memfd, which is enough for everything here: what is // under test is that a descriptor which travelled through SCM_RIGHTS still names its image. diff --git a/MobileGL/MG_Test/Wire/StagedTextureStoreTest.cpp b/MobileGL/MG_Test/Wire/StagedTextureStoreTest.cpp index b374a769..8fe89c32 100644 --- a/MobileGL/MG_Test/Wire/StagedTextureStoreTest.cpp +++ b/MobileGL/MG_Test/Wire/StagedTextureStoreTest.cpp @@ -402,7 +402,7 @@ TEST(StagedTextureStoreTest, TheGpuDirtyMarkIsTheServersOwnDirtyAnswer) { EXPECT_EQ(monolithStore.TrackedResources(), 0u); } -// ---- P8-E (docs/Disaggregated/notes/p8/E.md): the store follows glCopyImageSubData ----------- +// ---- P8-E (docs/archive/notes/p8/E.md): the store follows glCopyImageSubData ----------- // // Two 4x4 RGBA8 levels (four bytes a texel), each adopted whole with a distinct byte pattern so a // mis-addressed row or a swapped endpoint shows as a wrong byte, not a coincidentally right one. diff --git a/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md b/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md index 8814559b..ed6efcb7 100644 --- a/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md +++ b/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md @@ -1,6 +1,6 @@ # 当前阶段:P13 已收官(2026-10-07);下一阶段 P14 -> **更新 2026-10-07**。这一页只有摘要;计划与裁定在 [`notes/p13/PLAN-P13.md`](notes/p13/PLAN-P13.md)、[`notes/p13/INTEGRATOR-DECISIONS-P13.md`](notes/p13/INTEGRATOR-DECISIONS-P13.md),逐波记录在 [`notes/p13/README.md`](notes/p13/README.md)。上一阶段 P8 于 09-30 收官,见 [`notes/p8/README.md`](notes/p8/README.md)。 +> **更新 2026-10-07**。这一页只有摘要;计划与裁定在 [`docs/archive/notes/p13/PLAN-P13.md`](../archive/notes/p13/PLAN-P13.md)、[`docs/archive/notes/p13/INTEGRATOR-DECISIONS-P13.md`](../archive/notes/p13/INTEGRATOR-DECISIONS-P13.md),逐波记录在 [`docs/archive/notes/p13/README.md`](../archive/notes/p13/README.md)。上一阶段 P8 于 09-30 收官,见 [`docs/archive/notes/p8/README.md`](../archive/notes/p8/README.md)。 ## 目标 @@ -23,4 +23,4 @@ **P14**:状态归属(同进程多 session / 多 context / share group),设计见 [`design/11-state-ownership.md`](design/11-state-ownership.md)。性能轮(基线 `dev` 构建,定频,FCL MC + anland glmark2,两后端)也排在 P13 之后。 -**待用户决策**:[`DEBTS.md`](notes/DEBTS.md) 中「需裁定」各项;FCL 无声死亡留给用户(`notes/p13/fcl-soak/README.md`)。 +**待用户决策**:[`DEBTS.md`](DEBTS.md) 中「需裁定」各项;FCL 无声死亡留给用户(`docs/archive/notes/p13/fcl-soak/README.md`)。 diff --git a/docs/Disaggregated/notes/DEBTS.md b/docs/Disaggregated/DEBTS.md similarity index 89% rename from docs/Disaggregated/notes/DEBTS.md rename to docs/Disaggregated/DEBTS.md index 195bf8f4..f56cf0d4 100644 --- a/docs/Disaggregated/notes/DEBTS.md +++ b/docs/Disaggregated/DEBTS.md @@ -4,7 +4,7 @@ > > **2026-10-07(P13 收官)关闭三行**:ID-P8-13(9 条 monolith 缺陷——monolith 换到记录臂后对应 monolith 登记在集成车道上全过,旧的 monolith 前端臂在 W6 删除)、ID-P8-14(`SyncClientSideVertexArraysForIndirectFetch` 的整 buffer 回读与 Magma monolith 深度 mip 的 view 类型都属于已删的 monolith 前端臂)、`MOBILEGL_PIPE_TEXEL_RETAIN_MB`(W3b 随 pull 构建删除)。新增两行:W9 缓存容量重调与 Magma monolith 性能,都排在 P13 之后的性能轮,基线是 `dev` 构建。 > -> 路线图只列"有债务、看这里"。每条写明去向;已关闭的历史债与当时的完整债务表见 [`p5b/README.md`](p5b/README.md) 末节。开放问题另见 [`OPEN-QUESTIONS.md`](OPEN-QUESTIONS.md)。更新:2026-09-30(P8 第二波;按债务审查重排。同日:create-indirect 换成派生 fixture `minecraft-1.21.1-neoforge-create-indirect-in-world-align1024`(不是原抓取,16 字节对齐的 SSBO 范围绑定挪到 1024 对齐),ID-P8-14、ID-P8-19 两条关闭——红米两后端 monolith / spawn 全过,Magma spawn 不再丢设备)。去向「需裁定」= 等用户定;「可进行」= 随时可开的小修,不依赖别的阶段。 +> 路线图只列"有债务、看这里"。每条写明去向;已关闭的历史债与当时的完整债务表见 [`docs/archive/notes/p5b/README.md`](../archive/notes/p5b/README.md) 末节。开放问题另见 [`OPEN-QUESTIONS.md`](OPEN-QUESTIONS.md)。更新:2026-09-30(P8 第二波;按债务审查重排。同日:create-indirect 换成派生 fixture `minecraft-1.21.1-neoforge-create-indirect-in-world-align1024`(不是原抓取,16 字节对齐的 SSBO 范围绑定挪到 1024 对齐),ID-P8-14、ID-P8-19 两条关闭——红米两后端 monolith / spawn 全过,Magma spawn 不再丢设备)。去向「需裁定」= 等用户定;「可进行」= 随时可开的小修,不依赖别的阶段。 | 债务 | 去向 | |---|---| @@ -26,12 +26,12 @@ | P8 转出(E):driver-written 标按整张纹理打(`GenerateMipmap` 也打),驱动拒读时连基级也具名拒绝,偏保守;跨格式拷贝 store 不跟随;拒绝仍是会话 Fatal(要改回包状态才能答 `GL_INVALID_OPERATION`) | 小修(按 level 打标);其余按需 | | P8 转出(B):`PipeCalls.def:260` `GenerateMipmap` 仍是 `kWaitApplied`,裁定 14 的理由(CPU 滤波碰 client 影子)已不成立,可改 `kWaitNone` | 性能工作(协议行为变更,需单独裁定) | | P8 转出(C):server SSBO 标记过近似(窗口内每个绑定的 SSBO 都标);一个留在 SSBO 绑定上又当 restart EBO 用的 buffer 每次 draw 都回读 | 性能工作 | -| P13 转出(ID-P13-2,P14 更新):Magma monolith 记录臂对 dev(pull)——trace 上已基本追平:rd12 83.8 对 87.0 fps(−4%),openra 747 对 293(dev 在那里等 GPU);P14 最大一项是 `553eb86d`(纹理层上传不再在 CPU 上等 GPU 排空,rd12 70→83)。但 **FCL MC 上仍差**:monolith 171 对 dev 232(−26%),inproc 195;呈现线程 CPU 只占约 2.8 / 5.8 ms 帧,其余是等待——与 trace 不同的另一处等待 | 下一阶段第一项:FCL Magma monolith 做 off-CPU profile(`--trace-offcpu`,同找到上传等待的方法;P14 收官时两次采集都没抓到游戏帧),找出那 3 ms 等待;数字见 `perf-p14/README.md` | -| ~~P13 转出(W9):缓存容量重调~~ **P14 关闭(读数)**:`MOBILEGL_PIPE_STATS` 在 rd12 / openra 上 render-state CSO 稳态每帧新铸 0 个,Magma 管线 memo 命中 99.0% / 92.7%,没有缓存抖动,P8 容量保留 | 已关闭(`perf-p14/BENCH.md` W9 节) | -| P14 转出:Espryt monolith 记录臂对 dev(pull)rd12 91.1 对 115.2 fps(−21%);FCL MC 198 对 229(−13%)。渲染线程每帧 CPU 11.56 对 9.07 ms:client half +1.39(validate 0.92:EmitGlobalConstants 0.17、EmitVertexElements 0.13、Tracker::Update 0.12、CopyField 0.10、validate 自身 0.10、EmitVertexBuffers 0.07;verb port 约 0.2)、backend +0.45(SyncNeccessaryTextures +0.14、SyncNeccessaryBuffers +0.08、AdoptUnchangedBufferSets +0.09、BindCurrentProgramWithResources +0.07、SyncCurrentProgramByHandle +0.05)、driver +0.33、applier +0.07。每项都在帧时间 2% 以下;合起来是记录臂的结构成本:pull 的后端在 draw 时按指针读前端对象,push 要检测变化(tracker)、序列化(emitter、uniform span)、应用(applier)、再由后端按句柄经 slot 表重新解析,并且因为后端看不到前端脏位而对每个绑定对象做 clean 检查——每步每 draw 几十 ns、各自是不相干的冷 cache 行,乘以 1471 draw/帧 | 下一阶段:per-(VAO, program) draw-packet 缓存(设计草稿 `perf-p14/NEXT-draw-packet-cache.md`,估计 rd12 Espryt monolith 回收 1.0–1.6 ms/帧,约 91→100–106 fps);先只做 client half 原型量 | +| P13 转出(ID-P13-2,P14 更新):Magma monolith 记录臂对 dev(pull)——trace 上已基本追平:rd12 83.8 对 87.0 fps(−4%),openra 747 对 293(dev 在那里等 GPU);P14 最大一项是 `553eb86d`(纹理层上传不再在 CPU 上等 GPU 排空,rd12 70→83)。但 **FCL MC 上仍差**:monolith 171 对 dev 232(−26%),inproc 195;呈现线程 CPU 只占约 2.8 / 5.8 ms 帧,其余是等待——与 trace 不同的另一处等待 | 下一阶段第一项:FCL Magma monolith 做 off-CPU profile(`--trace-offcpu`,同找到上传等待的方法;P14 收官时两次采集都没抓到游戏帧),找出那 3 ms 等待;数字见 `docs/archive/notes/perf-p14/README.md` | +| ~~P13 转出(W9):缓存容量重调~~ **P14 关闭(读数)**:`MOBILEGL_PIPE_STATS` 在 rd12 / openra 上 render-state CSO 稳态每帧新铸 0 个,Magma 管线 memo 命中 99.0% / 92.7%,没有缓存抖动,P8 容量保留 | 已关闭(`docs/archive/notes/perf-p14/BENCH.md` W9 节) | +| P14 转出:Espryt monolith 记录臂对 dev(pull)rd12 91.1 对 115.2 fps(−21%);FCL MC 198 对 229(−13%)。渲染线程每帧 CPU 11.56 对 9.07 ms:client half +1.39(validate 0.92:EmitGlobalConstants 0.17、EmitVertexElements 0.13、Tracker::Update 0.12、CopyField 0.10、validate 自身 0.10、EmitVertexBuffers 0.07;verb port 约 0.2)、backend +0.45(SyncNeccessaryTextures +0.14、SyncNeccessaryBuffers +0.08、AdoptUnchangedBufferSets +0.09、BindCurrentProgramWithResources +0.07、SyncCurrentProgramByHandle +0.05)、driver +0.33、applier +0.07。每项都在帧时间 2% 以下;合起来是记录臂的结构成本:pull 的后端在 draw 时按指针读前端对象,push 要检测变化(tracker)、序列化(emitter、uniform span)、应用(applier)、再由后端按句柄经 slot 表重新解析,并且因为后端看不到前端脏位而对每个绑定对象做 clean 检查——每步每 draw 几十 ns、各自是不相干的冷 cache 行,乘以 1471 draw/帧 | 下一阶段:per-(VAO, program) draw-packet 缓存(设计草稿 `docs/archive/notes/perf-p14/NEXT-draw-packet-cache.md`,估计 rd12 Espryt monolith 回收 1.0–1.6 ms/帧,约 91→100–106 fps);先只做 client half 原型量 | | P14 转出:Espryt monolith 的 driver 项 +0.33 ms/帧(2.9%),全在 `glDrawElements` 内部,GL 调用组合与 dev 相同。`simpleperf stat`(整次运行、渲染线程):feat 比 dev 多执行 16.6% 指令、L1D refill 多 56%、L2D 多 23%(IPC 3.73 对 3.86)。推断:记录臂每 draw 更大的工作集(record、applier 状态、slot 表、twin)把驱动的状态挤出 cache——这是计数器推断,没有在驱动内部测量 | 随 draw-packet 缓存一起验证:落地前后量 L1D refill 与 driver ms/帧;如果 driver 项不降,推断不成立,再单独查 | | P14 转出(测过未做):Tracker / residual 的前端变更 epoch 快路径——在每个 `DECLARE_GL_FUNCTION_END` 入口(除 draw、`glBindVertexArray`、浮点 `glUniform*` 外)以及手写入口和 EGL 入口里 bump 一个上下文 epoch;epoch 未动时 validate 只重算 VAO / program 派生的 shutter(上限约 0.07 ms),再经审计哪些 residual 字段依赖 VAO / program 绑定后跳过 residual copy(合计 0.15–0.25 ms,1.5–2%) | 各自低于 2% 门槛,且漏 bump 一个入口就渲染陈旧状态;并入 draw-packet 设计(其 §3 的上下文 epoch 就是它),不单独做 | -| P13 转出(FCL 浸泡,用户裁定:FCL 暂不改、MobileGL 不做规避):FCL game process can die silently (exit SIGNALED status=34, SIGRTMIN+2): the JVM signal reset after renderer selection drops libcore's AsynchronousCloseMonitor handler, and FCL's okhttp/Okio watchdog then kills the process; renderer-independent (reproduced on P12 and P13 libraries, both backends; untested with other renderers)。浸泡:P13 库 30 次(Magma 22 / Espryt 8)死 18 次、P12 库 10 次死 2 次;P12 / P13 逐次交替的对照(同场景同网络时段)P12 4/10、P13 2/10,时间线(`Renderer:` 行到 MobileGL 首行约 6.2 s、晚死固定在其后约 9.4 s)两库相同,无证据表明 MobileGL 拉高概率;全部 status=34,无 tombstone、无 kgsl;证据与机理见 [`p13/fcl-soak/README.md`](p13/fcl-soak/README.md) | fix belongs in FCL (save/restore libcore's SIGRTMIN+2 sigaction around JVM creation); left for the user | +| P13 转出(FCL 浸泡,用户裁定:FCL 暂不改、MobileGL 不做规避):FCL game process can die silently (exit SIGNALED status=34, SIGRTMIN+2): the JVM signal reset after renderer selection drops libcore's AsynchronousCloseMonitor handler, and FCL's okhttp/Okio watchdog then kills the process; renderer-independent (reproduced on P12 and P13 libraries, both backends; untested with other renderers)。浸泡:P13 库 30 次(Magma 22 / Espryt 8)死 18 次、P12 库 10 次死 2 次;P12 / P13 逐次交替的对照(同场景同网络时段)P12 4/10、P13 2/10,时间线(`Renderer:` 行到 MobileGL 首行约 6.2 s、晚死固定在其后约 9.4 s)两库相同,无证据表明 MobileGL 拉高概率;全部 status=34,无 tombstone、无 kgsl;证据与机理见 [`docs/archive/notes/p13/fcl-soak/README.md`](../archive/notes/p13/fcl-soak/README.md) | fix belongs in FCL (save/restore libcore's SIGRTMIN+2 sigaction around JVM creation); left for the user | | P8 转出(MD):dev 的 `RingAllocateSlow` 在出错的上下文上无上限地排水(设备上挂在 `glFinish`) | 小修(dev) | | P8 转出:`LogForwardChannel.APeerThatStopsReadingCostsWarnLinesNotTheCallersTime` 在负载下超时(两次),单跑必过 | 小修(放宽时限或隔离) | | P8 转出(SV):`gen_pipe_dirty_surface.py` 扫描集成测试源,测试成员名与 GLContext 成员同名(如 `m_parameters`)会静默弄坏它的自检;`.Mip3DValidation.` 在没装校验层的车道上是失败不是跳过 | 小修 / CI 记录 | @@ -42,11 +42,11 @@ | P11 转出(M2,给 dev):dev 的 `DirectVulkan.SplitRecording.` 车道没有 `RESOURCE_LOCK`、其用例读字面日志路径——`-j` 下可能互相截断;P11 线的副本已修(Magma 空 uniform 的重复修复已在 ID-P8-17 合成一条) | 下次向 dev 回流时带上 | | P11 转出(M2):超过 stage 分块预算的大层按分片发出,没有写入框覆盖的分片仍带整框(server 要靠它拼层图),会把影子盖到 GPU 写过的地方;修法要一个两个 server 都跳过的「只定位」区域写法,控制协议修订 +1(split 专属,早于 P11) | 小包或 P8 | | P11 转出(M2):上传仍有两种有损形状,各记一次日志——一层的精确写入框超过 4096 个时按存储的矩形表覆盖发出;applier 一个条目累计超过 4096 个区域时并成并集框。纹理带 GPU 写时两者都会把影子盖进空隙 | 小修,无触发报告 | -| P10 转出(性能):设备上 tcp loopback 的 rd12 每帧 19.4 ms 中 ~11.2 ms 是生产者在 stream 传输里的停车(发送 + 环 / stage / ack 等待),credit 等待只有 ~0.2 ms(`notes/p10/C-MEASUREMENTS.md` §2,ID-P10-13) | 路线图推完后的性能工作 | -| P11 转出(性能):设备上 MC 26.3,split T2 相对单进程采纳的 p99 Espryt +37–42%、Magma 约 2.5×;其中一部分是线程落位——server apply 线程钉在 6–7 核,client GL 线程多半落到慢核,每帧 CPU 约 2.3×(`notes/p11/A-DEVICE.md`)。RSS 一半已由 B2(T0)交付:峰值内存 Espryt −41–42%、Magma −18–26%(ID-P11-17) | 路线图推完后的性能工作(p99 与线程落位) | +| P10 转出(性能):设备上 tcp loopback 的 rd12 每帧 19.4 ms 中 ~11.2 ms 是生产者在 stream 传输里的停车(发送 + 环 / stage / ack 等待),credit 等待只有 ~0.2 ms(`docs/archive/notes/p10/C-MEASUREMENTS.md` §2,ID-P10-13) | 路线图推完后的性能工作 | +| P11 转出(性能):设备上 MC 26.3,split T2 相对单进程采纳的 p99 Espryt +37–42%、Magma 约 2.5×;其中一部分是线程落位——server apply 线程钉在 6–7 核,client GL 线程多半落到慢核,每帧 CPU 约 2.3×(`docs/archive/notes/p11/A-DEVICE.md`)。RSS 一半已由 B2(T0)交付:峰值内存 Espryt −41–42%、Magma −18–26%(ID-P11-17) | 路线图推完后的性能工作(p99 与线程落位) | | P11 转出(B2,性能):`glBufferStorage(NULL)` 的采纳先把整块零存储当 `resource_subdata` 发一遍(T2 与 T0 都是;MC 26.3 8 个存储、441.5 MiB) | 路线图推完后的性能工作 | | P12 未做:DirectGLES `g_Display` / `g_Surface` / `g_Context` 仍是全局(每进程一个会话时不需要);cached-app freezer 的完整处理(文档从未定义);多 context;server 窗口不转发输入 | 等出现第二个会话 / 第二个 context 的需求 | | P9 转出:Magma 每次 draw 对可写 SSBO / texel buffer / XFB 目标发整 buffer 的 `OnGpuWritten`(create-indirect 首帧 7,093 条),client 已自标同一批,冗余无害;`OnMipLevelsGenerated`、`OnCapsInvalidated` 仍无生产者。`OnTextureWriteback` 也无生产者,但别删:CPU 三通道 mip 退路要它(`CONTRACT-P5B.md:255`) | 以后的收窄 / 清理候选(ID-P9-7) | -| 树外脚本:普查跑器、`wsl_p5_gate.sh` 等在 `~/w7/notes/`,git merge 不会传播;`~/w7/notes/p11/gate.sh` 是事实上的门 | 需要时入库 | +| 树外脚本:普查跑器、`wsl_p5_gate.sh` 等在 `~/w7/notes/`,git merge 不会传播;`docs/archive/notes/p11/gate.sh` 是事实上的门 | 需要时入库 | -已关闭的历史债(P5 的 27 个 wrong-answer、`rsp` 残余读、P5b 的 inproc 依赖、ABI 指纹、默认 staging 装不下 128 MiB 上传、184 符号棘轮 CI 门)及当时的完整债务表见 [`notes/p5b/README.md`](p5b/README.md) 末节。 +已关闭的历史债(P5 的 27 个 wrong-answer、`rsp` 残余读、P5b 的 inproc 依赖、ABI 指纹、默认 staging 装不下 128 MiB 上传、184 符号棘轮 CI 门)及当时的完整债务表见 [`docs/archive/notes/p5b/README.md`](../archive/notes/p5b/README.md) 末节。 diff --git a/docs/Disaggregated/MEASUREMENTS.md b/docs/Disaggregated/MEASUREMENTS.md index f08ed45d..e2fa3c46 100644 --- a/docs/Disaggregated/MEASUREMENTS.md +++ b/docs/Disaggregated/MEASUREMENTS.md @@ -25,29 +25,29 @@ 这解释了 handoff §3.6「换快 3.4 倍的链路墙钟不变」:钱花在设备每次唤醒上;handoff §3.2 那 249 s 是在**未定频**的机器上取的,含这份空闲税。 **同一个诊断给出一条可移植修法**:把服务端的自旋预算调大(Activity 的 `env` extra → `MOBILEGL_IPC_SPIN_US=2000`,不需要 root、不需要改代码), 那一帧 **221.5 s → 182.8 s(−17%)**;设备定频+关深度空闲则是 **166.5 s(−25%)**。服务端日志会打印 `spin 2000 us` 自证。 - 见 [`notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md`](notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md) §2.6–2.10。 + 见 [`docs/archive/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md`](../archive/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md) §2.6–2.10。 - **画面正确**:Vulkan 后端真机画面检查 36/36 通过,CTS 五块相对基线没有超过 0.5 个百分点的退步、没有新崩溃(P7);server 自有窗口上屏两后端 SSIM 1.0(P12)。 -- **五臂传输对比(2026-09-28,未定频交错 A/B)**:重负载(rd12)下 inproc ≈ spawn+shm 比 monolith **快约 1/3**(run-ahead 流水线并行 + applier 路径探针更少),轻负载(openra)下 split 只付固定开销;**tcp localhost 慢 ~8 倍,瓶颈是 present credit=1 的串行等待(~74%)+ futex 唤醒税**,`MOBILEGL_IPC_SPIN_US=2000` 单项实测 21.7→63.6 fps;跨主机 TCP 的「`eglMakeCurrent` hang」**是测试环境造成的**(主机 v2rayN `xray_tun` 代理终结 TCP 后中继卡住,不是源码 bug);绕开后 P12 出口门 (b) 通过:WSL client 经 Wi-Fi 重放 rd12 世界内 trace,ssim 0.999883,稳态 17–22 fps(`PRESENT_CREDIT` 1/2/3 = 16.9 / 21.3 / 22.1),openra 稳态 105–133 fps;加载帧 2.7 GB 受带宽约束(server 实测 52 MB/s),稳态受往返延迟(20–24 MB/s)。全文 [`notes/perf-five-arm-20260928`](notes/perf-five-arm-20260928/README.md)。 +- **五臂传输对比(2026-09-28,未定频交错 A/B)**:重负载(rd12)下 inproc ≈ spawn+shm 比 monolith **快约 1/3**(run-ahead 流水线并行 + applier 路径探针更少),轻负载(openra)下 split 只付固定开销;**tcp localhost 慢 ~8 倍,瓶颈是 present credit=1 的串行等待(~74%)+ futex 唤醒税**,`MOBILEGL_IPC_SPIN_US=2000` 单项实测 21.7→63.6 fps;跨主机 TCP 的「`eglMakeCurrent` hang」**是测试环境造成的**(主机 v2rayN `xray_tun` 代理终结 TCP 后中继卡住,不是源码 bug);绕开后 P12 出口门 (b) 通过:WSL client 经 Wi-Fi 重放 rd12 世界内 trace,ssim 0.999883,稳态 17–22 fps(`PRESENT_CREDIT` 1/2/3 = 16.9 / 21.3 / 22.1),openra 稳态 105–133 fps;加载帧 2.7 GB 受带宽约束(server 实测 52 MB/s),稳态受往返延迟(20–24 MB/s)。全文 [`docs/archive/notes/perf-five-arm-20260928`](../archive/notes/perf-five-arm-20260928/README.md)。 ## 按阶段 | § | 阶段 | 一句结论 | 全文 | |---|---|---|---| -| 1 | P0 | 能从应用进程拉起第二个进程;跨进程共享 GPU 内存只有一条路在所有设备上可用 | [`notes/p0`](notes/p0/README.md) | -| 2 | P1 | 逐 draw 核对推送状态,79 条 trace 零分歧 | [`notes/p1`](notes/p1/README.md) | -| 3 | P2 | 桌面基准:新 tracker 比它替掉的旧填充更便宜 | [`notes/p2`](notes/p2/README.md) | -| 4 | P3a | 两机真机 Release:接口代价 +6–12%,VAO 切换密集的场景 +27–30% | [`notes/p3a`](notes/p3a/README.md) | -| 5 | P4a | 换到 Redmi;P4a 自己只加 3–6 个百分点 | [`notes/p4a`](notes/p4a/README.md) | -| 6 | P5 | 两线程第一帧画对;真机两线程臂还跑不完 | [`notes/p5`](notes/p5/README.md) | -| 7 | P5b | 真机两线程跑通四条游戏 trace;两线程额外代价 +6–18% | [`notes/p5b`](notes/p5b/README.md) | -| 8 | P5c | 两线程之间零共享内存后,全部测试仍绿 | [`notes/p5c`](notes/p5c/README.md) | -| 9 | P5d | 游戏内 7–13 → 103–106 fps,client CPU 15.0 → 9.2 ms/帧 | [`notes/p5d`](notes/p5d/README.md) | -| 10–11 | P5e | 发完就走比每条都等快 69%;重负载下与单线程持平 | [`notes/p5e`](notes/p5e/README.md) | -| 12 | P6 | 两进程与两线程持平;每帧数据量与记录数首次实测 | [`notes/p6`](notes/p6/README.md) | -| 13 | P3b/P4b | 纹理上传形状在四种拓扑下完全一致 | [`notes/p34b`](notes/p34b/README.md) | -| 14 | P6.5 | 跨机 TCP 102/102;断线约 5 s 检测到 | [`notes/p65`](notes/p65/README.md) | -| 15 | P7 | 真机画面 36/36;server 内存无界增长收住(主机 825 → 546 MiB) | [`notes/p7`](notes/p7/README.md) | -| 16 | P12 | 审查后真机复测:Espryt SSIM 1.0;Magma 1.0 / 0.999999511;P12 定向 CTest 46/46;纹理上传回包等待 1→0(主机机制门,真机墙钟待测);**P12 已收官(09-29)**:跨机 TCP 门 (b) 通过(rd12 ssim 0.999883、稳态 17–22 fps);FCL 门 (a) 通过(Minecraft 上屏到 render server 窗口,杀 server 后 33–54 ms 闩住 device-lost) | [`notes/p12`](notes/p12/README.md) | -| 17 | 五臂传输测量(2026-09-28,非阶段) | inproc/shm 重负载比 monolith 快 ~1/3;tcp localhost 瓶颈是 credit=1 + 唤醒税(SPIN_US=2000 → 2.9×);跨主机 hang 实为主机 xray TUN 代理造成;直连 Wi-Fi 稳态 rd12 17–22 fps、openra 105–133 fps | [`notes/perf-five-arm-20260928`](notes/perf-five-arm-20260928/README.md) | -| 18 | P11 | 同机零拷贝(T0)MC 26.3 峰值内存 Espryt −41–42%、Magma −18–26%,ssim / 帧时 / CPU 不变;外部 client 走共享内存 rd12 Espryt 约 119 fps(TCP 40–53);split T2 相对单进程采纳 p99 Espryt +37–42%、Magma 约 2.5×。未量:M2 后 split server 上纹理无 GPU 写时 Espryt 自己按存储阈值取舍精确写入框,非 ring 路径可能多发几个小框 | [`notes/p11`](notes/p11/README.md) | -| 19 | P8 | 真实内容只 Magma wire indirect 命中(MC 26.3 × Magma inproc 1,300 万 draw CPU 展开)→ 原生后 create-indirect 每次整 GPU 等待 321 → 0;红米 create-instancing × Espryt × monolith 0.870 → 0.99998(Adreno 丢排队环形拷贝,dev + feat 两条阶梯);最大 program archive 355 KB = arena/4 的 4.2 %(不分片);出口设备矩阵 77 格 / 臂无一变差 | [`notes/p8`](notes/p8/README.md) | +| 1 | P0 | 能从应用进程拉起第二个进程;跨进程共享 GPU 内存只有一条路在所有设备上可用 | [`docs/archive/notes/p0`](../archive/notes/p0/README.md) | +| 2 | P1 | 逐 draw 核对推送状态,79 条 trace 零分歧 | [`docs/archive/notes/p1`](../archive/notes/p1/README.md) | +| 3 | P2 | 桌面基准:新 tracker 比它替掉的旧填充更便宜 | [`docs/archive/notes/p2`](../archive/notes/p2/README.md) | +| 4 | P3a | 两机真机 Release:接口代价 +6–12%,VAO 切换密集的场景 +27–30% | [`docs/archive/notes/p3a`](../archive/notes/p3a/README.md) | +| 5 | P4a | 换到 Redmi;P4a 自己只加 3–6 个百分点 | [`docs/archive/notes/p4a`](../archive/notes/p4a/README.md) | +| 6 | P5 | 两线程第一帧画对;真机两线程臂还跑不完 | [`docs/archive/notes/p5`](../archive/notes/p5/README.md) | +| 7 | P5b | 真机两线程跑通四条游戏 trace;两线程额外代价 +6–18% | [`docs/archive/notes/p5b`](../archive/notes/p5b/README.md) | +| 8 | P5c | 两线程之间零共享内存后,全部测试仍绿 | [`docs/archive/notes/p5c`](../archive/notes/p5c/README.md) | +| 9 | P5d | 游戏内 7–13 → 103–106 fps,client CPU 15.0 → 9.2 ms/帧 | [`docs/archive/notes/p5d`](../archive/notes/p5d/README.md) | +| 10–11 | P5e | 发完就走比每条都等快 69%;重负载下与单线程持平 | [`docs/archive/notes/p5e`](../archive/notes/p5e/README.md) | +| 12 | P6 | 两进程与两线程持平;每帧数据量与记录数首次实测 | [`docs/archive/notes/p6`](../archive/notes/p6/README.md) | +| 13 | P3b/P4b | 纹理上传形状在四种拓扑下完全一致 | [`docs/archive/notes/p34b`](../archive/notes/p34b/README.md) | +| 14 | P6.5 | 跨机 TCP 102/102;断线约 5 s 检测到 | [`docs/archive/notes/p65`](../archive/notes/p65/README.md) | +| 15 | P7 | 真机画面 36/36;server 内存无界增长收住(主机 825 → 546 MiB) | [`docs/archive/notes/p7`](../archive/notes/p7/README.md) | +| 16 | P12 | 审查后真机复测:Espryt SSIM 1.0;Magma 1.0 / 0.999999511;P12 定向 CTest 46/46;纹理上传回包等待 1→0(主机机制门,真机墙钟待测);**P12 已收官(09-29)**:跨机 TCP 门 (b) 通过(rd12 ssim 0.999883、稳态 17–22 fps);FCL 门 (a) 通过(Minecraft 上屏到 render server 窗口,杀 server 后 33–54 ms 闩住 device-lost) | [`docs/archive/notes/p12`](../archive/notes/p12/README.md) | +| 17 | 五臂传输测量(2026-09-28,非阶段) | inproc/shm 重负载比 monolith 快 ~1/3;tcp localhost 瓶颈是 credit=1 + 唤醒税(SPIN_US=2000 → 2.9×);跨主机 hang 实为主机 xray TUN 代理造成;直连 Wi-Fi 稳态 rd12 17–22 fps、openra 105–133 fps | [`docs/archive/notes/perf-five-arm-20260928`](../archive/notes/perf-five-arm-20260928/README.md) | +| 18 | P11 | 同机零拷贝(T0)MC 26.3 峰值内存 Espryt −41–42%、Magma −18–26%,ssim / 帧时 / CPU 不变;外部 client 走共享内存 rd12 Espryt 约 119 fps(TCP 40–53);split T2 相对单进程采纳 p99 Espryt +37–42%、Magma 约 2.5×。未量:M2 后 split server 上纹理无 GPU 写时 Espryt 自己按存储阈值取舍精确写入框,非 ring 路径可能多发几个小框 | [`docs/archive/notes/p11`](../archive/notes/p11/README.md) | +| 19 | P8 | 真实内容只 Magma wire indirect 命中(MC 26.3 × Magma inproc 1,300 万 draw CPU 展开)→ 原生后 create-indirect 每次整 GPU 等待 321 → 0;红米 create-instancing × Espryt × monolith 0.870 → 0.99998(Adreno 丢排队环形拷贝,dev + feat 两条阶梯);最大 program archive 355 KB = arena/4 的 4.2 %(不分片);出口设备矩阵 77 格 / 臂无一变差 | [`docs/archive/notes/p8`](../archive/notes/p8/README.md) | diff --git a/docs/Disaggregated/notes/OPEN-QUESTIONS.md b/docs/Disaggregated/OPEN-QUESTIONS.md similarity index 97% rename from docs/Disaggregated/notes/OPEN-QUESTIONS.md rename to docs/Disaggregated/OPEN-QUESTIONS.md index 3115ce1c..52bf6540 100644 --- a/docs/Disaggregated/notes/OPEN-QUESTIONS.md +++ b/docs/Disaggregated/OPEN-QUESTIONS.md @@ -1,11 +1,11 @@ # 开放问题全文(原 `ROADMAP.md`「开放问题」,2026-09-24 移入) -> [`ROADMAP.md`](../ROADMAP.md) 只留每题一行的状态;这里是每一题的完整陈述、已答部分的出处与未答部分的判据。编号稳定,引用写 "开放问题 N"。 +> [`ROADMAP.md`](ROADMAP.md) 只留每题一行的状态;这里是每一题的完整陈述、已答部分的出处与未答部分的判据。编号稳定,引用写 "开放问题 N"。 P0 已回答的不再列出(spike A 的域、spike B 的分档、`posix_spawn` 不可用、OOM 探测惯用法、`GetInteger64i_v`/`GetProgramiv` 退役、D21 与 `RenderbufferObject` lifetime id、动态 accessor 基线)。 1. **client 侧 dirty 走查的真实每 draw CPU 代价。** 已答(P2–P4a):推送没有在拉取基线之下净减少;Release 下 P2 边界 +6–12%,P3a 在 VAO 切换密的 rd12 上再加 +17–19 pt,P4a 在 Espryt 上 +3.4–5.7 pt(`MEASUREMENTS.md` §3–§5)。用户 2026-09-08 接受,性能自此只记录。 -2. **真实语料上纹理重铸拉取的发生率。** 已答(P4a):可忽略,保留 LRU 维持默认 0——79 例 × 两后端 780 个统计窗口里共 2 次(`iris-photon`、`iris-derivative` 各 1,只在 DirectGLES)。但 P5b 下这条路径是具名 Fatal,正是这两条 trace 加 `create-indirect` GLES 的首阻塞(P9)。**P9 W2 关闭**:重铸不需要拉取——server 读 GPU 层、store 补 pending 盒(Espryt),GPU→GPU 拷贝(Magma);77 行 × {monolith, inproc} 普查仍是同两次(都是 store 无字节的渲染目标),`OnTexturePullRequest` 已删([`p9/W2-REMINT.md`](p9/W2-REMINT.md))。 +2. **真实语料上纹理重铸拉取的发生率。** 已答(P4a):可忽略,保留 LRU 维持默认 0——79 例 × 两后端 780 个统计窗口里共 2 次(`iris-photon`、`iris-derivative` 各 1,只在 DirectGLES)。但 P5b 下这条路径是具名 Fatal,正是这两条 trace 加 `create-indirect` GLES 的首阻塞(P9)。**P9 W2 关闭**:重铸不需要拉取——server 读 GPU 层、store 补 pending 盒(Espryt),GPU→GPU 拷贝(Magma);77 行 × {monolith, inproc} 普查仍是同两次(都是 store 无字节的渲染目标),`OnTexturePullRequest` 已删([`docs/archive/notes/p9/W2-REMINT.md`](../archive/notes/p9/W2-REMINT.md))。 3. **spike B 的 `untrusted_app` 域复核。** 两台设备的分档在 `shell` 域测得;从应用进程再跑一次 `extmem_probe`(spike A 的 exec 钩子已可用)。P11 前做。**2026-09-22 降级**:只对同机臂的 T0 / T1 有意义,stream 数据面不需要。 4. **渲染状态的 wire 粒度。** 已答(P2):16 个边界 / 15 个 chunk,7 pipeline 396 B + 8 dynamic 772 B;CSO LRU 64 暂定,P13 重调。 5. **无存储的 capability。** 已答(P2):`FramebufferSrgb`、`DepthClamp`、`TextureCubeMapSeamless` 三个都补了真存储,`sizeof(RenderStateParameters)` 仍 1168。 diff --git a/docs/Disaggregated/README.md b/docs/Disaggregated/README.md index 569a0798..ea31b1d5 100644 --- a/docs/Disaggregated/README.md +++ b/docs/Disaggregated/README.md @@ -21,10 +21,10 @@ |---|---| | 现在做到哪、下一步 | [`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md) | | 设计要点与各部分设计 | [`ARCHITECTURE.md`](ARCHITECTURE.md) → [`design/`](design/) | -| 分几个阶段、每个阶段做了什么 | [`ROADMAP.md`](ROADMAP.md) → [`notes/<阶段>/`](notes/README.md) | +| 分几个阶段、每个阶段做了什么 | [`ROADMAP.md`](ROADMAP.md) → [`notes/<阶段>/`](../archive/notes/README.md) | | 性能与验证的关键数字 | [`MEASUREMENTS.md`](MEASUREMENTS.md) | | 怎么构建、运行、测试 | [`guide/build-and-run.md`](guide/build-and-run.md) | | 代码在哪 / 术语 / 工程纪律 | [`guide/code-map.md`](guide/code-map.md)、[`guide/glossary.md`](guide/glossary.md)、[`guide/discipline.md`](guide/discipline.md) | -| 各阶段的原始计划、裁定、报告、证据 | [`notes/`](notes/README.md) | +| 各阶段的原始计划、裁定、报告、证据 | [`notes/`](../archive/notes/README.md) | 整理记录:2026-09-24 两次整理——顶层只留索引,设计正文拆到 `design/`,上手与参考放 `guide/`,阶段细节放 `notes/<阶段>/`;整理前的版本见提交 `1fb18d9`。更早的设计竞赛与评审稿在 git 历史(`8b31de2f`、`1794ac94`、`8349babe`、`87ee17c6`)。 diff --git a/docs/Disaggregated/ROADMAP.md b/docs/Disaggregated/ROADMAP.md index ea5d7755..37c59fb8 100644 --- a/docs/Disaggregated/ROADMAP.md +++ b/docs/Disaggregated/ROADMAP.md @@ -15,32 +15,32 @@ client(跑应用的一方)与 server(跑驱动的一方)可以在**不 | 阶段 | 做什么 | 状态 | |---|---|---| -| [P0](notes/p0/README.md) | 打地基:计数器、调用目录与生成器、CI 门;验证 Android 能拉起第二个进程 | ✅ 09-05 | -| [P0.5](notes/p05/README.md) | 抽出前后端共用的数据类型头,切断后端对前端头文件的依赖 | ✅ | -| [P1](notes/p1/README.md) | 后端改读一个"输入块",并能逐 draw 核对它与前端真实状态一致 | ✅ | -| [P2](notes/p2/README.md) | 前端开始主动推送渲染状态;接口代价实测 +6–12%,决定继续 | ✅ 09-08 | -| [P3a](notes/p3a/README.md) | GLES 后端的 buffer、顶点数组改用句柄 | ✅ 09-08 | -| [P4a](notes/p4a/README.md) | GLES 后端的帧缓冲、纹理、sampler、program 改用句柄 | ✅ 09-08 | -| [P5](notes/p5/README.md) | 第一次拆成两线程:命令队列 + 后端线程(每条命令都等) | ✅ 09-16 | -| [P5b](notes/p5b/README.md) | 把剩余命令迁到队列上;真机首次以独立后端线程跑通目标游戏 | ✅ 09-16 | -| [P5c](notes/p5c/README.md) | 两线程之间不再偷偷共享内存,只经队列交换 | ✅ 09-17 | -| [P5d](notes/p5d/README.md) | 两线程版本的性能:游戏内 7–13 fps → 103–106 fps | ✅ 09-18 | -| [P5e](notes/p5e/README.md) | client 发完就走,不再每条命令等后端;重负载下与单线程持平 | ✅ 09-19 | -| [P5f](notes/p5f/README.md) | 所有状态都经队列传递,为拆进程扫清最后障碍;Vulkan 后端也能发完就走 | ✅ 09-20 | -| [P6](notes/p6/README.md) | 拆成两个进程;真机上两进程与两线程成本持平 | ✅ 09-22 | -| [P6.5](notes/p65/README.md) | 传输分控制面 / 数据面;电脑当 client、手机当 server 经 TCP 跑通 | 第一波 ✅,余项交 CI | -| [Ph](notes/p7/README.md) | server 能安全地接受外来连接:令牌、限额、坏数据不致崩溃 | 必需项 ✅(随 P7) | -| [P3b / P4b](notes/p34b/README.md) | GLES 后端的深化与收尾 | 大部分 ✅,余项并行 | -| [P7](notes/p7/README.md) | Vulkan 后端完整迁移;真机画面检查 36/36 通过 | ✅ 09-23 | -| [**P12**](notes/p12/README.md) | **server 自己开窗口上屏,client 不需要窗口** | ✅ 09-29:出口门 B(跨机 TCP)✅ 09-28、A(FCL + 杀 server)✅ 09-29;契约 `MG_Remote/CONTRACT-P12.md`;G1 成立;余项进 [`DEBTS.md`](notes/DEBTS.md) | -| [**P8**](notes/p8/README.md) | ~~把剩余的仿真路径挪到正确的一侧,补齐协议~~ → **补齐 server 侧仿真缺口与 split 覆盖** | ✅ 09-30:重定界(原 10 项里 6 项前序已完成);Espryt 生成 mip / 暂存副本与 GPU 写 / 驱动拒读、Magma wire 原生 indirect 与 dispatch;246 例登上 split 三臂(`split_coverage.py`);Create 在 Adreno 上的丢拷贝修到 dev 与 feat;契约 `MG_Remote/CONTRACT-P8.md`;余项进 [`DEBTS.md`](notes/DEBTS.md) | -| [**P9**](notes/p9/README.md) | **反向通道:回读、日志、重铸不再同步等待 client** | ✅ 09-29:PACK-PBO 回读 fire-and-forget(两后端)、日志分级转发、重铸无拉取(`OnLog` / `OnTexturePullRequest` 删,回调 9 → 7),F1 / F2;契约 `MG_Remote/CONTRACT-P9.md`;G1 成立;事件量批处理无实测需求不做;余项进 [`DEBTS.md`](notes/DEBTS.md) | -| [**P10**](notes/p10/README.md) | **同步对象、查询与帧节奏** | ✅ 09-29:fence 轮询由 server 报告本地作答(`kEventFenceSignaled`、`MOBILEGL_IPC_POLL_ESCALATE`;主机 Magma·tcp −37%,Adreno 830 上两后端 0 次往返);`SetSwapInterval` 转发、class C 清零;query / XFB / AsyncCompile 登记 split 各臂;credit 1/2/3 设备 loopback 在噪声内;契约 `MG_Remote/CONTRACT-P10.md`;G1 成立;余项进 [`DEBTS.md`](notes/DEBTS.md) | -| [**P11**](notes/p11/README.md) | **同机大缓冲零拷贝共享** | ✅ 09-29:T0 零拷贝导入(两后端,默认开,自测不过或 Stream 上静默退回 T2);同机外部 client 经 helper + 令牌 broker 走共享内存(B1);连接按 `PairBind` nonce 配对(修订 5);采纳档位在握手时定;契约 `MG_Remote/CONTRACT-P11.md`;余项进 [`DEBTS.md`](notes/DEBTS.md) | -| [**P13**](notes/p13/README.md) | **删掉旧的"后端直接读前端"路径** | ✅ 10-07:单进程只走记录臂;pull / push 构建与 `PIPE_PUSH` / `LEGACY_MEMOS` 编译期开关、残余值块、后端前端对象臂删除;七个 OBJECT 模块与 server-only 真链接;link ratchet 172 → 27 具名债务;recorder 金标;G1 退役;FCL 真机两后端冒烟通过;性能轮(基线 `dev`)与余项进 [`DEBTS.md`](notes/DEBTS.md) | +| [P0](../archive/notes/p0/README.md) | 打地基:计数器、调用目录与生成器、CI 门;验证 Android 能拉起第二个进程 | ✅ 09-05 | +| [P0.5](../archive/notes/p05/README.md) | 抽出前后端共用的数据类型头,切断后端对前端头文件的依赖 | ✅ | +| [P1](../archive/notes/p1/README.md) | 后端改读一个"输入块",并能逐 draw 核对它与前端真实状态一致 | ✅ | +| [P2](../archive/notes/p2/README.md) | 前端开始主动推送渲染状态;接口代价实测 +6–12%,决定继续 | ✅ 09-08 | +| [P3a](../archive/notes/p3a/README.md) | GLES 后端的 buffer、顶点数组改用句柄 | ✅ 09-08 | +| [P4a](../archive/notes/p4a/README.md) | GLES 后端的帧缓冲、纹理、sampler、program 改用句柄 | ✅ 09-08 | +| [P5](../archive/notes/p5/README.md) | 第一次拆成两线程:命令队列 + 后端线程(每条命令都等) | ✅ 09-16 | +| [P5b](../archive/notes/p5b/README.md) | 把剩余命令迁到队列上;真机首次以独立后端线程跑通目标游戏 | ✅ 09-16 | +| [P5c](../archive/notes/p5c/README.md) | 两线程之间不再偷偷共享内存,只经队列交换 | ✅ 09-17 | +| [P5d](../archive/notes/p5d/README.md) | 两线程版本的性能:游戏内 7–13 fps → 103–106 fps | ✅ 09-18 | +| [P5e](../archive/notes/p5e/README.md) | client 发完就走,不再每条命令等后端;重负载下与单线程持平 | ✅ 09-19 | +| [P5f](../archive/notes/p5f/README.md) | 所有状态都经队列传递,为拆进程扫清最后障碍;Vulkan 后端也能发完就走 | ✅ 09-20 | +| [P6](../archive/notes/p6/README.md) | 拆成两个进程;真机上两进程与两线程成本持平 | ✅ 09-22 | +| [P6.5](../archive/notes/p65/README.md) | 传输分控制面 / 数据面;电脑当 client、手机当 server 经 TCP 跑通 | 第一波 ✅,余项交 CI | +| [Ph](../archive/notes/p7/README.md) | server 能安全地接受外来连接:令牌、限额、坏数据不致崩溃 | 必需项 ✅(随 P7) | +| [P3b / P4b](../archive/notes/p34b/README.md) | GLES 后端的深化与收尾 | 大部分 ✅,余项并行 | +| [P7](../archive/notes/p7/README.md) | Vulkan 后端完整迁移;真机画面检查 36/36 通过 | ✅ 09-23 | +| [**P12**](../archive/notes/p12/README.md) | **server 自己开窗口上屏,client 不需要窗口** | ✅ 09-29:出口门 B(跨机 TCP)✅ 09-28、A(FCL + 杀 server)✅ 09-29;契约 `docs/archive/contracts/CONTRACT-P12.md`;G1 成立;余项进 [`DEBTS.md`](DEBTS.md) | +| [**P8**](../archive/notes/p8/README.md) | ~~把剩余的仿真路径挪到正确的一侧,补齐协议~~ → **补齐 server 侧仿真缺口与 split 覆盖** | ✅ 09-30:重定界(原 10 项里 6 项前序已完成);Espryt 生成 mip / 暂存副本与 GPU 写 / 驱动拒读、Magma wire 原生 indirect 与 dispatch;246 例登上 split 三臂(`split_coverage.py`);Create 在 Adreno 上的丢拷贝修到 dev 与 feat;契约 `docs/archive/contracts/CONTRACT-P8.md`;余项进 [`DEBTS.md`](DEBTS.md) | +| [**P9**](../archive/notes/p9/README.md) | **反向通道:回读、日志、重铸不再同步等待 client** | ✅ 09-29:PACK-PBO 回读 fire-and-forget(两后端)、日志分级转发、重铸无拉取(`OnLog` / `OnTexturePullRequest` 删,回调 9 → 7),F1 / F2;契约 `docs/archive/contracts/CONTRACT-P9.md`;G1 成立;事件量批处理无实测需求不做;余项进 [`DEBTS.md`](DEBTS.md) | +| [**P10**](../archive/notes/p10/README.md) | **同步对象、查询与帧节奏** | ✅ 09-29:fence 轮询由 server 报告本地作答(`kEventFenceSignaled`、`MOBILEGL_IPC_POLL_ESCALATE`;主机 Magma·tcp −37%,Adreno 830 上两后端 0 次往返);`SetSwapInterval` 转发、class C 清零;query / XFB / AsyncCompile 登记 split 各臂;credit 1/2/3 设备 loopback 在噪声内;契约 `docs/archive/contracts/CONTRACT-P10.md`;G1 成立;余项进 [`DEBTS.md`](DEBTS.md) | +| [**P11**](../archive/notes/p11/README.md) | **同机大缓冲零拷贝共享** | ✅ 09-29:T0 零拷贝导入(两后端,默认开,自测不过或 Stream 上静默退回 T2);同机外部 client 经 helper + 令牌 broker 走共享内存(B1);连接按 `PairBind` nonce 配对(修订 5);采纳档位在握手时定;契约 `docs/archive/contracts/CONTRACT-P11.md`;余项进 [`DEBTS.md`](DEBTS.md) | +| [**P13**](../archive/notes/p13/README.md) | **删掉旧的"后端直接读前端"路径** | ✅ 10-07:单进程只走记录臂;pull / push 构建与 `PIPE_PUSH` / `LEGACY_MEMOS` 编译期开关、残余值块、后端前端对象臂删除;七个 OBJECT 模块与 server-only 真链接;link ratchet 172 → 27 具名债务;recorder 金标;G1 退役;FCL 真机两后端冒烟通过;性能轮(基线 `dev`)与余项进 [`DEBTS.md`](DEBTS.md) | | **P14** | **状态归属:同进程多 session / 多 context / share group**(统一 server 的前提,anland 内置渲染器不做按进程隔离) | 设计 ✅ [`design/11-state-ownership.md`](design/11-state-ownership.md),实现待做 | ## 另见 - 工程纪律与验证门:[`guide/discipline.md`](guide/discipline.md) -- 仍开放的债务:[`notes/DEBTS.md`](notes/DEBTS.md);开放问题:[`notes/OPEN-QUESTIONS.md`](notes/OPEN-QUESTIONS.md) +- 仍开放的债务:[`docs/Disaggregated/DEBTS.md`](DEBTS.md);开放问题:[`docs/Disaggregated/OPEN-QUESTIONS.md`](OPEN-QUESTIONS.md) diff --git a/docs/Disaggregated/design/02-catalogue-and-records.md b/docs/Disaggregated/design/02-catalogue-and-records.md index c6fc70f1..e0db7f4d 100644 --- a/docs/Disaggregated/design/02-catalogue-and-records.md +++ b/docs/Disaggregated/design/02-catalogue-and-records.md @@ -30,7 +30,7 @@ ### 3.3 能力位(`MGPCapBit`) -`CallMask` 取代"槽位是否为 null"这一隐式能力探测;`MGPCaps` = `DynamicBackendParameters` + `CallMask` + 格式能力表与 renderer 字符串两个 blob,握手后快照、`MakeCurrent` / `InitCapabilities` 后按 generation 重发布。位包括 viewport array、fp64 顶点、`kCapResidentSubData`、XFB / query 家族、`kCapNeedsHostIndexBytes`、`kCapNeedsHostUboBytes`、`kCapBackendOwnsXfbCapture`、`kCapRunAheadApply`(`MGPipeRunAheadCapBitsFor`:Espryt 自 P5e、Magma 自 P5f 之后的 Magma run-ahead 起发布,后者契约 `MG_Remote/CONTRACT-MAGMA-RUNAHEAD.md`)。**不存在"归属开关"(D-B7)**:multi-draw 分档与 restart 重写永远由 server 拥有,client 只在 caps 要求时提供索引字节。 +`CallMask` 取代"槽位是否为 null"这一隐式能力探测;`MGPCaps` = `DynamicBackendParameters` + `CallMask` + 格式能力表与 renderer 字符串两个 blob,握手后快照、`MakeCurrent` / `InitCapabilities` 后按 generation 重发布。位包括 viewport array、fp64 顶点、`kCapResidentSubData`、XFB / query 家族、`kCapNeedsHostIndexBytes`、`kCapNeedsHostUboBytes`、`kCapBackendOwnsXfbCapture`、`kCapRunAheadApply`(`MGPipeRunAheadCapBitsFor`:Espryt 自 P5e、Magma 自 P5f 之后的 Magma run-ahead 起发布,后者契约 `docs/archive/contracts/CONTRACT-MAGMA-RUNAHEAD.md`)。**不存在"归属开关"(D-B7)**:multi-draw 分档与 restart 重写永远由 server 拥有,client 只在 caps 要求时提供索引字节。 ## 4. 记录与 payload 约定(`MG_Pipe/MGPipeTypes.h`) diff --git a/docs/Disaggregated/design/04-reverse-channel.md b/docs/Disaggregated/design/04-reverse-channel.md index e8cdc566..a018f657 100644 --- a/docs/Disaggregated/design/04-reverse-channel.md +++ b/docs/Disaggregated/design/04-reverse-channel.md @@ -45,8 +45,8 @@ - 删除:`OnTexturePullRequest`(与 W3 删除的 `OnLog` 合计,回调 9 → 7)、`texture-remint-pull` 标记。op 50 `ResourceSubDataComplete` 只追加不删,留作退役行(解码拒收)。`MOBILEGL_PIPE_TEXEL_RETAIN_MB` 已无消费者,但在 pull 构建里,随 P13 删(G1)。 - `ImageBindableHint` 仍是预防:hint 在第一次 sync 前到达就直接按 image-bindable 分配,省掉一次 server 回读 + 重传。 - 已知 dev 缺陷(非 P9):monolith Espryt 的前端臂重放 client 影子,覆盖 GPU 写过的纹素。 -- 普查、覆盖矩阵、门与 red-once:[`notes/p9/W2-REMINT.md`](../notes/p9/W2-REMINT.md)。 +- 普查、覆盖矩阵、门与 red-once:[`docs/archive/notes/p9/W2-REMINT.md`](../../archive/notes/p9/W2-REMINT.md)。 ### 8.5 XFB scatter 留在 server -补丁循环需要"捕获前的字节",而拆分后权威影子归 server(`StagedShadow`),所以 scatter 在 server 原地跑完;回程只有一条 `OnBufferWriteback`,载补好的整段,按 `SEG_EVENT` 容量的四分之一切片(`MGPipeBufferWritebackSliceBytes`),最后一片落地即蕴含之前每一片。孤儿目标(`HasDefinedContent == 0`)零填充后照常散射。`OnXfbScatterReady` 已删除(回调 10 → 9)。落地论证见 [`notes/p34b/README.md`](../notes/p34b/README.md)(espryt D1)。 +补丁循环需要"捕获前的字节",而拆分后权威影子归 server(`StagedShadow`),所以 scatter 在 server 原地跑完;回程只有一条 `OnBufferWriteback`,载补好的整段,按 `SEG_EVENT` 容量的四分之一切片(`MGPipeBufferWritebackSliceBytes`),最后一片落地即蕴含之前每一片。孤儿目标(`HasDefinedContent == 0`)零填充后照常散射。`OnXfbScatterReady` 已删除(回调 10 → 9)。落地论证见 [`docs/archive/notes/p34b/README.md`](../../archive/notes/p34b/README.md)(espryt D1)。 diff --git a/docs/Disaggregated/design/05-backend-and-server.md b/docs/Disaggregated/design/05-backend-and-server.md index 78f42388..99332492 100644 --- a/docs/Disaggregated/design/05-backend-and-server.md +++ b/docs/Disaggregated/design/05-backend-and-server.md @@ -51,4 +51,4 @@ Track V(值类型:render state、pixel store、capability 位、标量)是 ### 10.3 索引宿主镜像(`Server/IndexHostMirror`,P8,待重裁) -设计:`kCapNeedsHostIndexBytes` 下,server 从本来就要收的 `ResourceCreate/Respecify/SubData` 流增量维护 element-array buffer 的宿主镜像,零额外流量;预算 `MOBILEGL_PIPE_INDEX_MIRROR_MB`(默认 64),超预算退化为逐 draw 经 `MGHostSpan` 传送。**P6 的 a6 审计实测宿主索引 span 无 producer、client 索引已是 owned buffer**,所以 P8 要按真实消费者重新裁定,不照抄本节([`notes/p8/README.md`](../notes/p8/README.md))。 +设计:`kCapNeedsHostIndexBytes` 下,server 从本来就要收的 `ResourceCreate/Respecify/SubData` 流增量维护 element-array buffer 的宿主镜像,零额外流量;预算 `MOBILEGL_PIPE_INDEX_MIRROR_MB`(默认 64),超预算退化为逐 draw 经 `MGHostSpan` 传送。**P6 的 a6 审计实测宿主索引 span 无 producer、client 索引已是 owned buffer**,所以 P8 要按真实消费者重新裁定,不照抄本节([`docs/archive/notes/p8/README.md`](../../archive/notes/p8/README.md))。 diff --git a/docs/Disaggregated/design/06-transport.md b/docs/Disaggregated/design/06-transport.md index 7a4651d2..c2eeb7db 100644 --- a/docs/Disaggregated/design/06-transport.md +++ b/docs/Disaggregated/design/06-transport.md @@ -64,4 +64,4 @@ fence 完成度必须来自真的逐 fence 退休,不是 present 水位(Dire - 两端是不同二进制:`wireFingerprint`(`PipeFields.def` 派生的逐成员布局摘要 + 目录摘要 + 字节序 / 指针宽度)永远比较;`buildFingerprint` 只在 `Dial == Fork`(或 `MOBILEGL_IPC_REQUIRE_SAME_BUILD=1`)下比较;不一致是 `Refuse`,不是 abort。 - TCP 上每条 `kWaitReply` 就是一个 RTT、`SEG_STAGE` 字节对的是 30–100 MB/s 的链路:这两列从"记录项"变成可行性数(开放问题 19、20)。 -第一波(全 TCP 控制 + stream 数据)已落地;同机混搭(nd `auto` / sd)是第二波。细节 [`notes/p65/README.md`](../notes/p65/README.md),契约 `MobileGL/MG_Remote/CONTRACT-P65.md`。 +第一波(全 TCP 控制 + stream 数据)已落地;同机混搭(nd `auto` / sd)是第二波。细节 [`docs/archive/notes/p65/README.md`](../../archive/notes/p65/README.md),契约 `docs/archive/contracts/CONTRACT-P65.md`。 diff --git a/docs/Disaggregated/design/07-memory-readback-verification.md b/docs/Disaggregated/design/07-memory-readback-verification.md index a313f454..95d77a11 100644 --- a/docs/Disaggregated/design/07-memory-readback-verification.md +++ b/docs/Disaggregated/design/07-memory-readback-verification.md @@ -10,7 +10,7 @@ |---|---|---| | T0 | client 分配 `AHardwareBuffer` BLOB,server 导入(Vulkan / GLES) | 唯一在两台设备、两个后端上都完整读写的档(P11 主攻) | | T1 | server 导出 opaque fd | 仅 Adreno 的 Vulkan 路径 | -| T2 | 拒绝,client 侧推送 | 永久正确回退;**今天 split 用的档**(`MOBILEGL_IPC_ADOPT_TIER=2`),stream 数据面上强制(P11 A1:两端握手时 `Transport::SettleAdoptTierAtHandshake` 对 0/1 打一行 `Refuse{AdoptTierOnStream}` 并走 T2;共享段上 client 握手期 `Fatal{UnimplementedAdoptTier}`,[`CONTRACT-P11.md`](../../../MobileGL/MG_Remote/CONTRACT-P11.md) §1) | +| T2 | 拒绝,client 侧推送 | 永久正确回退;**今天 split 用的档**(`MOBILEGL_IPC_ADOPT_TIER=2`),stream 数据面上强制(P11 A1:两端握手时 `Transport::SettleAdoptTierAtHandshake` 对 0/1 打一行 `Refuse{AdoptTierOnStream}` 并走 T2;共享段上 client 握手期 `Fatal{UnimplementedAdoptTier}`,[`CONTRACT-P11.md`](../../archive/contracts/CONTRACT-P11.md) §1) | T2 下 client 侧推送三件套:不做 map/unmap 命令对(payload 带 `hasLiveHostWrites`);在每个 validate 点按块(`MOBILEGL_IPC_PERSISTENT_BLOCK_KB`,默认 64)推送可达的已映射 buffer,脏页追踪 + 哈希抑制只发变化的块(P5d);门 `PersistentCoherentMapScenario`。`mpr` 数的是每一次 `MapPersistent` 发射(铸成或拒绝都算),所以在 monolith 下也可断言。 diff --git a/docs/Disaggregated/design/08-runtime-and-platform.md b/docs/Disaggregated/design/08-runtime-and-platform.md index aecdfd92..208ef58d 100644 --- a/docs/Disaggregated/design/08-runtime-and-platform.md +++ b/docs/Disaggregated/design/08-runtime-and-platform.md @@ -23,7 +23,7 @@ - 交付链(spike A 已证):APK 唯一可 exec 的位置是 `lib//`,server 以 `add_executable` + `lib*.so` 命名构建;从 `untrusted_app` 进程 `fork`+`execve` 同域、零 avc denial;`posix_spawn` 在 minSdk 26 不可用。一份共享库两个角色(stub `dlopen` + `dlsym("mobilegl_server_main")`)。 - 离屏 server:前台 `MobileGLServerService`(`:mglsrv`),从 `nativeLibraryDir` exec,fork-per-session,EGL 是 pbuffer / surfaceless。 -- **上屏 server(P12 子集)**:窗口归 **server 自己**(client 的窗口不跨进程)。`MobileGLDisplayActivity`(`:mglwin`)持全屏 SurfaceView,在自己的进程里用一个线程跑 TCP server(会话串行、会话间重置闩、后端按进程钉住);`ServerDisplay` 以 acquire / release / 几何三个钩子持有窗口,apply 线程以**租约**使用它。client 设 `MOBILEGL_IPC_SURFACE=server` 后**无头**:`eglCreateWindowSurface(NULL)` 发一帧 `WindowKind::ServerOwned`(控制修订 3),不发 `SetWindowHandle`,尺寸由 reply 带回,resize 变成对 server 窗口的几何请求;client 没给 `EGL_WIDTH/HEIGHT`(SDL)时取 native window 的大小作请求,server 把窗口缓冲固定成它并等比留黑边(不然横屏游戏在竖屏窗口里被裁)。FCL 只能接外部 server(自带 spawn 会把窗口指针发过来,被 Rule H 拒),且要开版本设置「游戏退到后台时不暂停」,否则 FCL 一退后台游戏就暂停(`MG_Remote/CONTRACT-P12.md`)。一台设备同一时刻一个 server;一个会话一种表面模式(`SurfaceModeMismatch`);无显示的 server 对 ServerOwned 具名拒绝(`NoServerDisplay`)。 +- **上屏 server(P12 子集)**:窗口归 **server 自己**(client 的窗口不跨进程)。`MobileGLDisplayActivity`(`:mglwin`)持全屏 SurfaceView,在自己的进程里用一个线程跑 TCP server(会话串行、会话间重置闩、后端按进程钉住);`ServerDisplay` 以 acquire / release / 几何三个钩子持有窗口,apply 线程以**租约**使用它。client 设 `MOBILEGL_IPC_SURFACE=server` 后**无头**:`eglCreateWindowSurface(NULL)` 发一帧 `WindowKind::ServerOwned`(控制修订 3),不发 `SetWindowHandle`,尺寸由 reply 带回,resize 变成对 server 窗口的几何请求;client 没给 `EGL_WIDTH/HEIGHT`(SDL)时取 native window 的大小作请求,server 把窗口缓冲固定成它并等比留黑边(不然横屏游戏在竖屏窗口里被裁)。FCL 只能接外部 server(自带 spawn 会把窗口指针发过来,被 Rule H 拒),且要开版本设置「游戏退到后台时不暂停」,否则 FCL 一退后台游戏就暂停(`docs/archive/contracts/CONTRACT-P12.md`)。一台设备同一时刻一个 server;一个会话一种表面模式(`SurfaceModeMismatch`);无显示的 server 对 ServerOwned 具名拒绝(`NoServerDisplay`)。 - 失窗:`surfaceDestroyed` 有界(3 s)阻塞,直到 apply 线程(批内每条记录前也检查)放掉后端表面并以 `Fatal{ServerWindowLost}` 闩住会话;server 继续监听。进程内会话结束时手动做进程退出本来白给的清理(Espryt twin 与单元影子、swap interval、Magma renderer)。 - `HeadlessGL` 的 fork 预检会产生孤儿 server:server 的 EOF 检测即时且无条件退出。 diff --git a/docs/Disaggregated/design/09-build-switches-counters.md b/docs/Disaggregated/design/09-build-switches-counters.md index 865101cb..a1002ff0 100644 --- a/docs/Disaggregated/design/09-build-switches-counters.md +++ b/docs/Disaggregated/design/09-build-switches-counters.md @@ -70,4 +70,4 @@ CMake:`MOBILEGL_BUILD_DISAGGREGATED`(OFF)、`MOBILEGL_BUILD_DISAGGREGATED_ ## 附 B:边界计数器(`MobileGL/MG_Util/Metrics/PipeStats.h`) -关闭时每站点一次全局 load + 一条永不命中的分支。字节类(stage buffer / texture / UBO / client 数组、`pmap`、`resid`、`csob-blob`、`seg` = 写进 `SEG_STAGE` 的字节)、调用类(`draws`、`accessor-calls`、纹理上传 emit / box / rect / jobs、`csom` / `csob`、`mpr`、`trp`、`rsp`、`wrec`、`maxrec` / `ringwraps` / `ringpads` / `ringwaits`、门铃 `srv` / `srvpark` / `cli` / `clipark`)与六个 memo 门的 hit/miss。每 `MOBILEGL_PIPE_STATS_PERIOD` 帧一条 `MGPipe stats:` 汇总行,按角色写日志。读法陷阱:`accessor-calls` 是静态下界,判性能只看 CPU 时间;spawn 下 client 不推进帧窗口(`frames=0`),窗口化字段在 spawn client 上无效,run total 仍有效([`notes/p6/README.md`](../notes/p6/README.md) §12.1)。站点清单(哪些路径**没有**接线)写在 `PipeStats.cpp` 头部,那份清单是契约。 +关闭时每站点一次全局 load + 一条永不命中的分支。字节类(stage buffer / texture / UBO / client 数组、`pmap`、`resid`、`csob-blob`、`seg` = 写进 `SEG_STAGE` 的字节)、调用类(`draws`、`accessor-calls`、纹理上传 emit / box / rect / jobs、`csom` / `csob`、`mpr`、`trp`、`rsp`、`wrec`、`maxrec` / `ringwraps` / `ringpads` / `ringwaits`、门铃 `srv` / `srvpark` / `cli` / `clipark`)与六个 memo 门的 hit/miss。每 `MOBILEGL_PIPE_STATS_PERIOD` 帧一条 `MGPipe stats:` 汇总行,按角色写日志。读法陷阱:`accessor-calls` 是静态下界,判性能只看 CPU 时间;spawn 下 client 不推进帧窗口(`frames=0`),窗口化字段在 spawn client 上无效,run total 仍有效([`docs/archive/notes/p6/README.md`](../../archive/notes/p6/README.md) §12.1)。站点清单(哪些路径**没有**接线)写在 `PipeStats.cpp` 头部,那份清单是契约。 diff --git a/docs/Disaggregated/design/10-phase-shapes.md b/docs/Disaggregated/design/10-phase-shapes.md index 91c106bd..2a678eee 100644 --- a/docs/Disaggregated/design/10-phase-shapes.md +++ b/docs/Disaggregated/design/10-phase-shapes.md @@ -8,10 +8,10 @@ | 原节 | 主题 | 仍生效的规则 | 全文 | |---|---|---|---| -| 17.1 | verb barrier 与诚实的同地址空间传输(P5) | 同地址空间不得成为旁路(R-2):encoder 把 `MGHostSpan::Ptr` 恒写 `nullptr`;reply 以记录序号为 slot id(R-3);等待看门狗 120 s 只判死锁,不是性能门 | [`notes/p5/README.md`](../notes/p5/README.md) | +| 17.1 | verb barrier 与诚实的同地址空间传输(P5) | 同地址空间不得成为旁路(R-2):encoder 把 `MGHostSpan::Ptr` 恒写 `nullptr`;reply 以记录序号为 slot id(R-3);等待看门狗 120 s 只判死锁,不是性能门 | [`docs/archive/notes/p5/README.md`](../../archive/notes/p5/README.md) | | 17.2 | 后端槽三类、caps、tight readback(P5) | A 本地答 / B 发射 / C 具名拒绝,永不回落 monolith(R-4);能力只读 `CallMask`(R-8);`ReadPixels` 线上恒 tight,client 按自己的 pack state 散射 | 同上 | | 17.3 | server 角色、shadow 与退出(P5) | apply 线程终身持有 native context,EGL 罕见操作经控制邮箱进 apply 线程;staged shadow 只交 server-owned 拷贝;有界退出顺序 | 同上 | | 17.4 | lane 隔离(P5) | 每条 split 条目私有日志;E1 / E3 控制把"选中条目被跳过"判为失败 | 同上 | -| 17.5 | class-C verb 迁移(P5b) | 迁移顺序由动态普查决定;一次迁移 = 一个发射器 + 一个 sink 体;记录逐字带 GL 调用参数,未测量的形式按名拒绝(规则 D) | [`notes/p5b/README.md`](../notes/p5b/README.md) | -| 17.6 | 共享地址空间访问归零(P5c) | server 端纹理 staged shadow;`SEG_EVENT` 是唯一反向通道;sink / twin 按记录句柄解析;`applier_reset` / `object_death` 控制记录;角色守卫 `Fatal{RoleViolation}` | [`notes/p5c/README.md`](../notes/p5c/README.md) | -| 17.7 | run-ahead(P5e) | 规则 F:unbarriered 记录的 apply 不读任何 client 内存(违反即具名 Fatal,与 strict 开关无关);`gPipeInputs` 是 server 角色内存;`RunAheadArmed()` 在首次 caps 采纳时锁存,只能关不能开;`RUN_AHEAD=0` 是 A/B 对照,`VERB_BARRIER=0` 会连带关掉 run-ahead | [`notes/p5e/README.md`](../notes/p5e/README.md) | +| 17.5 | class-C verb 迁移(P5b) | 迁移顺序由动态普查决定;一次迁移 = 一个发射器 + 一个 sink 体;记录逐字带 GL 调用参数,未测量的形式按名拒绝(规则 D) | [`docs/archive/notes/p5b/README.md`](../../archive/notes/p5b/README.md) | +| 17.6 | 共享地址空间访问归零(P5c) | server 端纹理 staged shadow;`SEG_EVENT` 是唯一反向通道;sink / twin 按记录句柄解析;`applier_reset` / `object_death` 控制记录;角色守卫 `Fatal{RoleViolation}` | [`docs/archive/notes/p5c/README.md`](../../archive/notes/p5c/README.md) | +| 17.7 | run-ahead(P5e) | 规则 F:unbarriered 记录的 apply 不读任何 client 内存(违反即具名 Fatal,与 strict 开关无关);`gPipeInputs` 是 server 角色内存;`RunAheadArmed()` 在首次 caps 采纳时锁存,只能关不能开;`RUN_AHEAD=0` 是 A/B 对照,`VERB_BARRIER=0` 会连带关掉 run-ahead | [`docs/archive/notes/p5e/README.md`](../../archive/notes/p5e/README.md) | diff --git a/docs/Disaggregated/design/11-state-ownership.md b/docs/Disaggregated/design/11-state-ownership.md index 3782a862..f2962fb5 100644 --- a/docs/Disaggregated/design/11-state-ownership.md +++ b/docs/Disaggregated/design/11-state-ownership.md @@ -1,6 +1,6 @@ # 状态归属:session / context / share group / thread current(P14 设计) -> 为 anland 内置统一 server 而做。动因与否定项见 [`../notes/anland/handoff-legacy-mobilegl-unified.md`](../notes/anland/handoff-legacy-mobilegl-unified.md):不许用「每应用 fork 一个渲染进程」掩盖全局状态归属。本文行号对 `2f64ede8`(+ `4156ca6e` 文档提交),代码移动后以符号名检索。 +> 为 anland 内置统一 server 而做。动因与否定项见 [`docs/archive/notes/anland/handoff-legacy-mobilegl-unified.md`](../../archive/notes/anland/handoff-legacy-mobilegl-unified.md):不许用「每应用 fork 一个渲染进程」掩盖全局状态归属。本文行号对 `2f64ede8`(+ `4156ca6e` 文档提交),代码移动后以符号名检索。 ## 结论 diff --git a/docs/Disaggregated/guide/build-and-run.md b/docs/Disaggregated/guide/build-and-run.md index d248e840..d77ff9df 100644 --- a/docs/Disaggregated/guide/build-and-run.md +++ b/docs/Disaggregated/guide/build-and-run.md @@ -35,5 +35,5 @@ ctest --test-dir build-split -L 'integration-(spawn|tcp)' --output-on-failure - 两份 APK flavour:单进程 / split(Gradle 属性 `mobilegl.buildDisaggregated`、`mobilegl.buildDisaggregatedInproc`;独立 plugin 构建默认 split,FCL 内嵌默认单进程)。split APK 同样要设 `MOBILEGL_TRANSPORT`,不设就是单进程对照。 - 设备侧 server 有两种形态:离屏的前台 Service(`MobileGLServerService`)与上屏的 `MobileGLDisplayActivity`;同一时刻只有一个。plugin 与 trace 两个 flavour 的 APK 都带(standalone 构建默认开 `mobilegl.buildDisaggregated`),入口是 APK 底部导航栏的 “Render Server” 页;plugin flavour 的这三个组件不导出,只有 trace 允许 adb 直接按组件名拉起。 -- 电脑当 client、手机当 server 的跨机配置(起 server、设令牌、`adb forward` 备用路线)见 [`../notes/p65/README.md`](../notes/p65/README.md) 的"两边怎么配"。 +- 电脑当 client、手机当 server 的跨机配置(起 server、设令牌、`adb forward` 备用路线)见 [`docs/archive/notes/p65/README.md`](../../archive/notes/p65/README.md) 的"两边怎么配"。 - 性能对比只用 Redmi `2f7cbe2e`,按 [`pin-verification-2026-09-07.md`](pin-verification-2026-09-07.md) 定频,reboot-clean、同热窗口、配对 A/B。P13 之后的性能工作以 `dev` 分支构建为「之前」基线(用户 2026-10-07)。 diff --git a/docs/Disaggregated/guide/pin-verification-2026-09-07.md b/docs/Disaggregated/guide/pin-verification-2026-09-07.md index c502f67f..94a45230 100644 --- a/docs/Disaggregated/guide/pin-verification-2026-09-07.md +++ b/docs/Disaggregated/guide/pin-verification-2026-09-07.md @@ -8,7 +8,7 @@ |---|---|---|---|---|---| | Redmi M332BF `2f7cbe2e` | SM8750 / Adreno 830v2 | policy6 → 1958400(stock 1017600–3072000) | policy0 → 1555200(stock 556800–2745600) | kgsl `min/max_pwrlevel = 0`;2026-09-11 实测 1050 MHz(厂商 `thermal_pwrlevel` 锁 1),2026-09-16 起实测 1100 MHz | 主动风扇 `/sys/class/xm_power/hw_monitor/pwm_fan` 恒 level 2,用例间降温 <1 min;温度门 `cpuss-0-0` | -与小米 `35d0befa` 同 SoC、同 OPP 表,两台的钉频数值可比;跨钉频口径(1050 vs 1100 MHz)的活动不可比钟频,只有同场配对可比。Redmi 的行已于 P6 收尾(2026-09-22)并入树内 `tools/device_bench/pin_device.sh`(`2f7cbe2e` 条目;stock 范围与小米不同,GPU 实测钳在 1050 MHz:`thermal_pwrlevel` 写 0 读回 1,见 [`../notes/p6/README.md`](../notes/p6/README.md) §12.7);此前它只在树外的 `~/w7/notes/p2/devices/pin_device.sh`。 +与小米 `35d0befa` 同 SoC、同 OPP 表,两台的钉频数值可比;跨钉频口径(1050 vs 1100 MHz)的活动不可比钟频,只有同场配对可比。Redmi 的行已于 P6 收尾(2026-09-22)并入树内 `tools/device_bench/pin_device.sh`(`2f7cbe2e` 条目;stock 范围与小米不同,GPU 实测钳在 1050 MHz:`thermal_pwrlevel` 写 0 读回 1,见 [`docs/archive/notes/p6/README.md`](../../archive/notes/p6/README.md) §12.7);此前它只在树外的 `docs/archive/notes/p2/devices/pin_device.sh`。 ## 2026-09-07 核验:小米 `35d0befa` 与 Oppo `3B159D009VZ00000`(P2 / P3a 使用) diff --git a/docs/Disaggregated/pwait/README.md b/docs/Disaggregated/pwait/README.md index 12846a1a..f0d906ab 100644 --- a/docs/Disaggregated/pwait/README.md +++ b/docs/Disaggregated/pwait/README.md @@ -5,8 +5,8 @@ with a 165 Hz display (6.06 ms per vsync). Espryt = DirectGLES, Magma = DirectVu thread records and applies. Inproc: the GL thread records and `mgl-srv-apply` applies and presents. The timelines and latency below come from one 4.9 s Perfetto run per arm (`pwlat`, with frametimeline). -The fps numbers come from the 3-rep A/B in [SCOREBOARD.md](../notes/perf-p15/SCOREBOARD.md) (section pwab). -The mechanism is analysed in depth in [PRESENT-WAIT.md](../notes/perf-p15/PRESENT-WAIT.md). +The fps numbers come from the 3-rep A/B in [SCOREBOARD.md](../../archive/notes/perf-p15/SCOREBOARD.md) (section pwab). +The mechanism is analysed in depth in [PRESENT-WAIT.md](../../archive/notes/perf-p15/PRESENT-WAIT.md). ## Summary diff --git a/docs/MobileVA/plan.md b/docs/MobileVA/plan.md index 60e22b43..bc697205 100644 --- a/docs/MobileVA/plan.md +++ b/docs/MobileVA/plan.md @@ -5,7 +5,7 @@ > source named) or **[unverified]** (expected from documentation or memory of the client sources; > each one has a check in the M1 spikes). Anything that says "will", "proposed" or "TODO" is design. > -> Context: [`../Disaggregated/notes/anland/plan-ahb-dmabuf.md`](../Disaggregated/notes/anland/plan-ahb-dmabuf.md) +> Context: [`docs/archive/notes/anland/plan-ahb-dmabuf.md`](../archive/notes/anland/plan-ahb-dmabuf.md) > (shared images), the YUV import work in MobileGL `7218bacb` / `18a5dba0`, and the skill > `.claude/skills/anland-mobilegl-plasma/` (build, deploy, probes). diff --git a/docs/Performance/ipc-create-window.md b/docs/Performance/ipc-create-window.md index 410ca764..1df51ad4 100644 --- a/docs/Performance/ipc-create-window.md +++ b/docs/Performance/ipc-create-window.md @@ -3,7 +3,7 @@ Measured 2026-09-26 on the split stack (client and server in separate processes). These are the numbers that used to live in the comment above `IpcTable::CreateWindow` in `MobileGL/Config.h`. The longer record, with the logs and the attempts that failed, is -[`notes/p12/CREATE-WINDOW-MEASURED.md`](../Disaggregated/notes/p12/CREATE-WINDOW-MEASURED.md) (in Chinese). +[`docs/archive/notes/p12/CREATE-WINDOW-MEASURED.md`](../archive/notes/p12/CREATE-WINDOW-MEASURED.md) (in Chinese). ## What the knob does diff --git a/docs/archive/README.md b/docs/archive/README.md new file mode 100644 index 00000000..feef8856 --- /dev/null +++ b/docs/archive/README.md @@ -0,0 +1,12 @@ +# Archive + +The planning notes and agent contracts of the disaggregation work, kept as they were when the work moved on. Nothing here is maintained. The directory is frozen, and the text check (`scripts/check_text_hygiene.py`) rejects any change to it. + +| Directory | Moved from | Contents | +|---|---|---| +| `notes/` | `docs/Disaggregated/notes/` | Per-phase plans, briefs, reviews, measurements and logs | +| `contracts/` | `MobileGL/MG_Remote/` | The per-phase agent contracts (`CONTRACT-P5.md` and so on) | + +Links inside these files were adjusted once, for the move. Links that were already broken before it are left as they were. + +The maintained documents are in `docs/Disaggregated/`: the design and guide directories, `DEBTS.md`, `OPEN-QUESTIONS.md` and the `ARCHITECTURE.md`, `ROADMAP.md` and `MEASUREMENTS.md` indexes. diff --git a/MobileGL/MG_Remote/CONTRACT-MAGMA-RUNAHEAD.md b/docs/archive/contracts/CONTRACT-MAGMA-RUNAHEAD.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-MAGMA-RUNAHEAD.md rename to docs/archive/contracts/CONTRACT-MAGMA-RUNAHEAD.md diff --git a/MobileGL/MG_Remote/CONTRACT-P10.md b/docs/archive/contracts/CONTRACT-P10.md similarity index 85% rename from MobileGL/MG_Remote/CONTRACT-P10.md rename to docs/archive/contracts/CONTRACT-P10.md index 67ae8ec6..820d72f7 100644 --- a/MobileGL/MG_Remote/CONTRACT-P10.md +++ b/docs/archive/contracts/CONTRACT-P10.md @@ -1,6 +1,6 @@ # P10:sync / query / present 节奏 -2026-09-29。依据 `docs/Disaggregated/notes/p10/`(计划与范围重划 [`PLAN-P10.md`](../../docs/Disaggregated/notes/p10/PLAN-P10.md)、裁定 `INTEGRATOR-DECISIONS-P10.md`)。本文只记实现所需的协议与行为;验证结果以 notes 里的运行证据为准。 +2026-09-29。依据 `docs/Disaggregated/notes/p10/`(计划与范围重划 [`PLAN-P10.md`](../notes/p10/PLAN-P10.md)、裁定 `INTEGRATOR-DECISIONS-P10.md`)。本文只记实现所需的协议与行为;验证结果以 notes 里的运行证据为准。 ## 范围 @@ -36,7 +36,7 @@ fence 轮询不再是往返(§1);最后一个 class-C 与 split 覆盖( ### 测量 -`PacedFrameFenceWaitsBench`(手动开启,不设门)的配对结果在 [`A-FENCE-POLL.md`](../../docs/Disaggregated/notes/p10/A-FENCE-POLL.md):Magma 走 tcp 时每帧耗时降 37%、fence 往返为 0;Espryt 在主机 llvmpipe 上没有收益,因为只有阻塞等待才能让 fence 可见。在 Adreno 830 上两后端都是 0 次往返、598 / 598 次本地作答([`C-MEASUREMENTS.md`](../../docs/Disaggregated/notes/p10/C-MEASUREMENTS.md) §1)。 +`PacedFrameFenceWaitsBench`(手动开启,不设门)的配对结果在 [`A-FENCE-POLL.md`](../notes/p10/A-FENCE-POLL.md):Magma 走 tcp 时每帧耗时降 37%、fence 往返为 0;Espryt 在主机 llvmpipe 上没有收益,因为只有阻塞等待才能让 fence 可见。在 Adreno 830 上两后端都是 0 次往返、598 / 598 次本地作答([`C-MEASUREMENTS.md`](../notes/p10/C-MEASUREMENTS.md) §1)。 ## 2. 最后一个 class-C 与 split 覆盖(B) @@ -46,7 +46,7 @@ fence 轮询不再是往返(§1);最后一个 class-C 与 split 覆盖( ## 3. 测量(只记录) -见 [`C-MEASUREMENTS.md`](../../docs/Disaggregated/notes/p10/C-MEASUREMENTS.md),包括真机 fence bench、设备上 TCP loopback 的 `PRESENT_CREDIT` 1/2/3、以及主机 retrace 往返普查。在 loopback 上 credit 没有噪声以外的影响(rd12 51.4 / 51.6 / 52.4 fps),默认值保持 1。 +见 [`C-MEASUREMENTS.md`](../notes/p10/C-MEASUREMENTS.md),包括真机 fence bench、设备上 TCP loopback 的 `PRESENT_CREDIT` 1/2/3、以及主机 retrace 往返普查。在 loopback 上 credit 没有噪声以外的影响(rd12 51.4 / 51.6 / 52.4 fps),默认值保持 1。 ## 不变量 diff --git a/MobileGL/MG_Remote/CONTRACT-P11.md b/docs/archive/contracts/CONTRACT-P11.md similarity index 95% rename from MobileGL/MG_Remote/CONTRACT-P11.md rename to docs/archive/contracts/CONTRACT-P11.md index 2638eccf..18fb42a3 100644 --- a/MobileGL/MG_Remote/CONTRACT-P11.md +++ b/docs/archive/contracts/CONTRACT-P11.md @@ -1,6 +1,6 @@ # P11:persistent map 采纳档位诚实化(A 包主机半) -2026-09-29。依据 [`PLAN-P11.md`](../../docs/Disaggregated/notes/p11/PLAN-P11.md) §2 的 A1、A2 与 C 的文档修正。档位名按 `design/07`:T0 = client 分配 `AHardwareBuffer`、server 导入;T1 = server 导出 opaque fd;T2 = 拒绝,client 保留 shadow 并推送。本文只记实现所需的行为与门;A3 / A4(设备)与 B(T0)不在本文。 +2026-09-29。依据 [`PLAN-P11.md`](../notes/p11/PLAN-P11.md) §2 的 A1、A2 与 C 的文档修正。档位名按 `design/07`:T0 = client 分配 `AHardwareBuffer`、server 导入;T1 = server 导出 opaque fd;T2 = 拒绝,client 保留 shadow 并推送。本文只记实现所需的行为与门;A3 / A4(设备)与 B(T0)不在本文。 ## 范围 @@ -57,7 +57,7 @@ ## PAIR:socket client 的两条连接按身份配对(B0 F2) -依据 [`B0-CROSS-APP.md`](../../docs/Disaggregated/notes/p11/B0-CROSS-APP.md) F2:server 按到达顺序配对(`AcceptPair`,"先到是控制、后到是 aux"),设备上 server app 的就绪探测(一次空 `connect()` + `close()`)成了下一个真 client 的控制连接,会话读到探测的套接字后退出(`control peer closed before sending a first frame`),client `no Welcome … (rc=6)`;两个 client 同时连也会互换半边。 +依据 [`B0-CROSS-APP.md`](../notes/p11/B0-CROSS-APP.md) F2:server 按到达顺序配对(`AcceptPair`,"先到是控制、后到是 aux"),设备上 server app 的就绪探测(一次空 `connect()` + `close()`)成了下一个真 client 的控制连接,会话读到探测的套接字后退出(`control peer closed before sending a first frame`),client `no Welcome … (rc=6)`;两个 client 同时连也会互换半边。 ### 线上格式 @@ -101,7 +101,7 @@ ## B1:同机外部 client 经 app_process helper 与令牌 broker 走共享内存 -依据 [`PLAN-P11.md`](../../docs/Disaggregated/notes/p11/PLAN-P11.md) §2 B、[`B0-CROSS-APP.md`](../../docs/Disaggregated/notes/p11/B0-CROSS-APP.md)、[`HSPIKE.md`](../../docs/Disaggregated/notes/p11/HSPIKE.md)(ID-P11-13)。消费者:同一台手机上从另一个 app(Termux、adb shell)启动、没有 Java `Context` 的原生 GL 程序。证据根 `~/w7/notes/p11/evidence/b1/`(下文的 `evidence/b1/…`、`m-probe*`、`freeze-*` 都在它下面),报告 `~/w7/notes/p11/b1-report.md`。 +依据 [`PLAN-P11.md`](../notes/p11/PLAN-P11.md) §2 B、[`B0-CROSS-APP.md`](../notes/p11/B0-CROSS-APP.md)、[`HSPIKE.md`](../notes/p11/HSPIKE.md)(ID-P11-13)。消费者:同一台手机上从另一个 app(Termux、adb shell)启动、没有 Java `Context` 的原生 GL 程序。证据根 `~/w7/notes/p11/evidence/b1/`(下文的 `evidence/b1/…`、`m-probe*`、`freeze-*` 都在它下面),报告 `~/w7/notes/p11/b1-report.md`。 ### 链路 @@ -226,7 +226,7 @@ ## B2:T0——client 的 AHardwareBuffer 作 persistent map 的存储 -依据 [`PLAN-P11.md`](../../docs/Disaggregated/notes/p11/PLAN-P11.md) §2 B、`design/07`。证据根 `~/w7/notes/p11/evidence/b2/`,报告 `~/w7/notes/p11/b2-report.md`。T0 只换**存储**:采纳门(≥ 16 MiB 的 NULL 定义、persistent 写映射等,与 monolith 同一组门)问到的那个 store 由 client 分配的 AHB 承载,server 导入它;GPU 有序的写(`glBufferSubData` 进已采纳 store = resident subdata)仍走 SEG_STAGE——**T0 不减少 MC 26.3 每帧的 stage 字节**:红米实测 SEG_STAGE 1071 → 1052 KiB/帧(只少了 T2 的 persistent-map 推送 19.4 KiB/帧),省的是 client shadow 与 server 暂存副本(内存)。monolith 不变。 +依据 [`PLAN-P11.md`](../notes/p11/PLAN-P11.md) §2 B、`design/07`。证据根 `~/w7/notes/p11/evidence/b2/`,报告 `~/w7/notes/p11/b2-report.md`。T0 只换**存储**:采纳门(≥ 16 MiB 的 NULL 定义、persistent 写映射等,与 monolith 同一组门)问到的那个 store 由 client 分配的 AHB 承载,server 导入它;GPU 有序的写(`glBufferSubData` 进已采纳 store = resident subdata)仍走 SEG_STAGE——**T0 不减少 MC 26.3 每帧的 stage 字节**:红米实测 SEG_STAGE 1071 → 1052 KiB/帧(只少了 T2 的 persistent-map 推送 19.4 KiB/帧),省的是 client shadow 与 server 暂存副本(内存)。monolith 不变。 ### 档位(取代 §1 表里 SharedSegments 的 client 行) diff --git a/MobileGL/MG_Remote/CONTRACT-P12.md b/docs/archive/contracts/CONTRACT-P12.md similarity index 94% rename from MobileGL/MG_Remote/CONTRACT-P12.md rename to docs/archive/contracts/CONTRACT-P12.md index 80d57b65..b3a2e811 100644 --- a/MobileGL/MG_Remote/CONTRACT-P12.md +++ b/docs/archive/contracts/CONTRACT-P12.md @@ -1,6 +1,6 @@ # P12:server 自有屏幕窗口 -2026-09-29。依据 `docs/Disaggregated/notes/p12/`([`PLAN-P12.md`](../../docs/Disaggregated/notes/p12/PLAN-P12.md)、裁定 `INTEGRATOR-DECISIONS-P12.md` ID-P12-1..15、验收 [`CROSSHOST-ACCEPTANCE.md`](../../docs/Disaggregated/notes/p12/CROSSHOST-ACCEPTANCE.md) / [`FCL-ACCEPTANCE.md`](../../docs/Disaggregated/notes/p12/FCL-ACCEPTANCE.md))。本文只记实现所需的协议与行为;验证结果以那些文件里的运行证据为准。 +2026-09-29。依据 `docs/Disaggregated/notes/p12/`([`PLAN-P12.md`](../notes/p12/PLAN-P12.md)、裁定 `INTEGRATOR-DECISIONS-P12.md` ID-P12-1..15、验收 [`CROSSHOST-ACCEPTANCE.md`](../notes/p12/CROSSHOST-ACCEPTANCE.md) / [`FCL-ACCEPTANCE.md`](../notes/p12/FCL-ACCEPTANCE.md))。本文只记实现所需的协议与行为;验证结果以那些文件里的运行证据为准。 ## 范围 diff --git a/MobileGL/MG_Remote/CONTRACT-P5.md b/docs/archive/contracts/CONTRACT-P5.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P5.md rename to docs/archive/contracts/CONTRACT-P5.md diff --git a/MobileGL/MG_Remote/CONTRACT-P5B.md b/docs/archive/contracts/CONTRACT-P5B.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P5B.md rename to docs/archive/contracts/CONTRACT-P5B.md diff --git a/MobileGL/MG_Remote/CONTRACT-P5C.md b/docs/archive/contracts/CONTRACT-P5C.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P5C.md rename to docs/archive/contracts/CONTRACT-P5C.md diff --git a/MobileGL/MG_Remote/CONTRACT-P5E.md b/docs/archive/contracts/CONTRACT-P5E.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P5E.md rename to docs/archive/contracts/CONTRACT-P5E.md diff --git a/MobileGL/MG_Remote/CONTRACT-P6.md b/docs/archive/contracts/CONTRACT-P6.md similarity index 98% rename from MobileGL/MG_Remote/CONTRACT-P6.md rename to docs/archive/contracts/CONTRACT-P6.md index 608326b1..07f07dc6 100644 --- a/MobileGL/MG_Remote/CONTRACT-P6.md +++ b/docs/archive/contracts/CONTRACT-P6.md @@ -11,13 +11,13 @@ commit; paths are under `MobileGL/` unless they start with `docs/`. (`lk` / `hs` / `so` / `sm` / `cp` / `dl` / `st` / `t6`) that needs a row changed goes through the integrator; the packages compile against the rows below from day one. -**What this file is written from.** [`a6-audit-v1.md`](../../docs/Disaggregated/notes/p6/a6-audit-v1.md) +**What this file is written from.** [`a6-audit-v1.md`](../notes/p6/a6-audit-v1.md) (198 rows, seven items, each adversarially re-resolved) and -[`a6-link-experiment.md`](../../docs/Disaggregated/notes/p6/a6-link-experiment.md) (the 184 symbols). -It supersedes [`P6-CONTRACT-DRAFT.md`](../../docs/Disaggregated/notes/p6/P6-CONTRACT-DRAFT.md), which was +[`a6-link-experiment.md`](../notes/p6/a6-link-experiment.md) (the 184 symbols). +It supersedes [`P6-CONTRACT-DRAFT.md`](../notes/p6/P6-CONTRACT-DRAFT.md), which was written before its own audit and is **wrong in four places** (§10.1). The re-scoping against the eventual client-in-a-VM end state is -[`P6-ENDSTATE-REVIEW.md`](../../docs/Disaggregated/notes/p6/P6-ENDSTATE-REVIEW.md); this file takes from it +[`P6-ENDSTATE-REVIEW.md`](../notes/p6/P6-ENDSTATE-REVIEW.md); this file takes from it only what P6 must not preclude, and §11 says what P6 explicitly does not take on. --- @@ -696,7 +696,7 @@ Measured: **184 symbols**, 177 of them real function calls, that the server set **60**, **P6's own 6**. There is additionally **no module target to link** — `SOURCE_FILES` is one flat list feeding both library targets — so establishing module boundaries is itself named work, owed to P13. Method and full symbol list: -[`a6-link-experiment.md`](../../docs/Disaggregated/notes/p6/a6-link-experiment.md). +[`a6-link-experiment.md`](../notes/p6/a6-link-experiment.md). **P6's own six** are not P7's and are `sm`/`lk`'s to clear: `Server/PipeApplier.cpp` calls `Client::ClientSession::NoteApplyThreadEnteredApplier()` / `NoteApplyThreadLeftApplier()`; @@ -710,7 +710,7 @@ explicit per-object partition on every `build-linux-split` run and fails on any P6.5's `Client::ClientSession::StartSpawned()` and `MG_State::GLState::ProgramArtifactsSchemaFingerprint()`, with the three backend buckets reproducing a6's 101 / 14 / 60 exactly — while a symbol that disappears is reported rather than failed, so progress never turns the build red -([`link-ratchet.md`](../../docs/Disaggregated/notes/p7/link-ratchet.md)). +([`link-ratchet.md`](../notes/p7/link-ratchet.md)). ### 12.2 D11 — five unbounded peer-driven allocations, capped, with no `try`/`catch` diff --git a/MobileGL/MG_Remote/CONTRACT-P65.md b/docs/archive/contracts/CONTRACT-P65.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P65.md rename to docs/archive/contracts/CONTRACT-P65.md diff --git a/MobileGL/MG_Remote/CONTRACT-P7.md b/docs/archive/contracts/CONTRACT-P7.md similarity index 99% rename from MobileGL/MG_Remote/CONTRACT-P7.md rename to docs/archive/contracts/CONTRACT-P7.md index 66693802..126864c6 100644 --- a/MobileGL/MG_Remote/CONTRACT-P7.md +++ b/docs/archive/contracts/CONTRACT-P7.md @@ -4,7 +4,7 @@ **怎么改。** 集成者的文件。wave 2 的实现包(A / B / C / D / E / F,§9)需要改行时经集成者;包从第一天起就对着下面的行编译。 -**写自什么。** [`notes/p7/PLAN-PH-P34B-P7.md`](../../docs/Disaggregated/notes/p7/PLAN-PH-P34B-P7.md)(三行逐项审计,66 个代理,每个 done / unnecessary 判定两名反驳者)与 [`notes/p7/INTEGRATOR-DECISIONS-P7.md`](../../docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md)(ID-P7-1..11)。本文只写**规范**——树必须变成什么样、门怎么判;为什么这样定在裁定日志里。 +**写自什么。** [`notes/p7/PLAN-PH-P34B-P7.md`](../notes/p7/PLAN-PH-P34B-P7.md)(三行逐项审计,66 个代理,每个 done / unnecessary 判定两名反驳者)与 [`notes/p7/INTEGRATOR-DECISIONS-P7.md`](../notes/p7/INTEGRATOR-DECISIONS-P7.md)(ID-P7-1..11)。本文只写**规范**——树必须变成什么样、门怎么判;为什么这样定在裁定日志里。 --- diff --git a/MobileGL/MG_Remote/CONTRACT-P8.md b/docs/archive/contracts/CONTRACT-P8.md similarity index 100% rename from MobileGL/MG_Remote/CONTRACT-P8.md rename to docs/archive/contracts/CONTRACT-P8.md diff --git a/MobileGL/MG_Remote/CONTRACT-P9.md b/docs/archive/contracts/CONTRACT-P9.md similarity index 98% rename from MobileGL/MG_Remote/CONTRACT-P9.md rename to docs/archive/contracts/CONTRACT-P9.md index f13f54fb..d7eda55c 100644 --- a/MobileGL/MG_Remote/CONTRACT-P9.md +++ b/docs/archive/contracts/CONTRACT-P9.md @@ -1,6 +1,6 @@ # P9:反向通道 -2026-09-29。依据 `docs/Disaggregated/notes/p9/`(交接 [`HANDOFF-P9.md`](../../docs/Disaggregated/notes/p9/HANDOFF-P9.md)、裁定 `INTEGRATOR-DECISIONS-P9.md`)。本文只记实现所需的协议与行为;验证结果以 notes 里的运行证据为准。 +2026-09-29。依据 `docs/Disaggregated/notes/p9/`(交接 [`HANDOFF-P9.md`](../notes/p9/HANDOFF-P9.md)、裁定 `INTEGRATOR-DECISIONS-P9.md`)。本文只记实现所需的协议与行为;验证结果以 notes 里的运行证据为准。 ## 范围 diff --git a/docs/Disaggregated/notes/README.md b/docs/archive/notes/README.md similarity index 75% rename from docs/Disaggregated/notes/README.md rename to docs/archive/notes/README.md index cc7290f0..8121030e 100644 --- a/docs/Disaggregated/notes/README.md +++ b/docs/archive/notes/README.md @@ -1,6 +1,6 @@ # 阶段笔记(notes) -这一层放**各阶段的全部细节**:每个阶段一个目录,目录里的 `README.md` 是该阶段的**汇总**(摘要、阶段表原行、逐门实测、落地形状、当时的进度页),其余文件是那个阶段的原始工作笔记——包计划(`BRIEF-*.md` / `TASK-*.md`)、契约草稿、集成者逐条裁定(`INTEGRATOR-DECISIONS-*.md`)、只读审计与普查、包报告、设备记录与证据。顶层的索引([`../ROADMAP.md`](../ROADMAP.md)、[`../MEASUREMENTS.md`](../MEASUREMENTS.md)、[`../CURRENT_STAGE_PROGRESS.md`](../CURRENT_STAGE_PROGRESS.md))只留一句话并链到这里;不属于某个阶段的设计正文在 [`../design/`](../design/),上手与参考在 [`../guide/`](../guide/)。 +这一层放**各阶段的全部细节**:每个阶段一个目录,目录里的 `README.md` 是该阶段的**汇总**(摘要、阶段表原行、逐门实测、落地形状、当时的进度页),其余文件是那个阶段的原始工作笔记——包计划(`BRIEF-*.md` / `TASK-*.md`)、契约草稿、集成者逐条裁定(`INTEGRATOR-DECISIONS-*.md`)、只读审计与普查、包报告、设备记录与证据。顶层的索引([`../ROADMAP.md`](../../Disaggregated/ROADMAP.md)、[`../MEASUREMENTS.md`](../../Disaggregated/MEASUREMENTS.md)、[`../CURRENT_STAGE_PROGRESS.md`](../../Disaggregated/CURRENT_STAGE_PROGRESS.md))只留一句话并链到这里;不属于某个阶段的设计正文在 [`../design/`](../../Disaggregated/design/),上手与参考在 [`../guide/`](../../Disaggregated/guide/)。 ## 按阶段 @@ -25,7 +25,7 @@ | **P12**(已收官)server 自有屏幕窗口 | [`p12/`](p12/README.md) | `PLAN-P12.md`、`INTEGRATOR-DECISIONS-P12.md`、`device/` | | P8 / P9 / P10 / P11 / P13(待排) | [`p8/`](p8/README.md)、[`p9/`](p9/README.md)、[`p10/`](p10/README.md)、[`p11/`](p11/README.md)、[`p13/`](p13/README.md) | 目前只有路线图上的完整范围与出口门 | -跨阶段:[`DEBTS.md`](DEBTS.md)(仍开放的债务与去向)、[`OPEN-QUESTIONS.md`](OPEN-QUESTIONS.md)(开放问题全文,编号稳定);[`handoff/`](handoff/)(P7 的集成者审查稿,路径被 P7 交接文档引用,保持原位);[`recovered/`](recovered/)(从失败的 workflow 运行里捞回的 P0–P2 期材料,`wf1` 设计定稿前的计划草案、`wf2` P0、`wf3` P0.5、`wf4` P1、`wf5` P2;与阶段目录逐字节重复的副本已于 2026-09-24 删除,只留独有的);[`perf-five-arm-20260928/`](perf-five-arm-20260928/README.md)(非阶段的五臂传输性能对比与瓶颈归因,2026-09-28);[`anland/`](anland/README.md)(非阶段的调研:MobileGL 给 Anland——root Android 上的 Wayland 宿主——当 GL 提供者,两边各要做什么,2026-09-30)。 +跨阶段:[`DEBTS.md`](../../Disaggregated/DEBTS.md)(仍开放的债务与去向)、[`OPEN-QUESTIONS.md`](../../Disaggregated/OPEN-QUESTIONS.md)(开放问题全文,编号稳定);[`handoff/`](handoff/)(P7 的集成者审查稿,路径被 P7 交接文档引用,保持原位);[`recovered/`](recovered/)(从失败的 workflow 运行里捞回的 P0–P2 期材料,`wf1` 设计定稿前的计划草案、`wf2` P0、`wf3` P0.5、`wf4` P1、`wf5` P2;与阶段目录逐字节重复的副本已于 2026-09-24 删除,只留独有的);[`perf-five-arm-20260928/`](perf-five-arm-20260928/README.md)(非阶段的五臂传输性能对比与瓶颈归因,2026-09-28);[`anland/`](anland/README.md)(非阶段的调研:MobileGL 给 Anland——root Android 上的 Wayland 宿主——当 GL 提供者,两边各要做什么,2026-09-30)。 ## 旧引用怎么找 @@ -37,12 +37,12 @@ | `docs/Disaggregated/P5E-RUNAHEAD.md` | [`p5e/P5E-RUNAHEAD.md`](p5e/P5E-RUNAHEAD.md) | | `docs/Disaggregated/P5F-WIRE-COMPLETENESS.md` | [`p5f/P5F-WIRE-COMPLETENESS.md`](p5f/P5F-WIRE-COMPLETENESS.md) | | `docs/Disaggregated/P6-SPAWN-PLAN.md`、`P6-CONTRACT-DRAFT.md`、`P6-ENDSTATE-REVIEW.md` | [`p6/`](p6/README.md) 同名文件 | -| `docs/Disaggregated/CURRENT_STAGE_STATUS.md` | 并入 [`../CURRENT_STAGE_PROGRESS.md`](../CURRENT_STAGE_PROGRESS.md);其中 P7 的出口门 / 已落地 / 真机三节在 [`p7/README.md`](p7/README.md),P12 部分在 [`p12/README.md`](p12/README.md) | +| `docs/Disaggregated/CURRENT_STAGE_STATUS.md` | 并入 [`../CURRENT_STAGE_PROGRESS.md`](../../Disaggregated/CURRENT_STAGE_PROGRESS.md);其中 P7 的出口门 / 已落地 / 真机三节在 [`p7/README.md`](p7/README.md),P12 部分在 [`p12/README.md`](p12/README.md) | | 旧 `CURRENT_STAGE_PROGRESS.md` 的 P6.5 第一波与 P6 收官快照 | [`p65/README.md`](p65/README.md)、[`p6/README.md`](p6/README.md) | | 当前阶段页的明细(带裁定编号的表、余项清单、证据位置) | [`p12/README.md`](p12/README.md) 的"当前状态详情"节 | -| `docs/Disaggregated/devices/pin-verification-2026-09-07.md` | [`../guide/pin-verification-2026-09-07.md`](../guide/pin-verification-2026-09-07.md) | -| `ARCHITECTURE.md` 的设计正文(§1–§17、附 A / B) | [`../design/`](../design/) 下十个文件,编号不变;对照表在 [`../ARCHITECTURE.md`](../ARCHITECTURE.md) | -| 旧 `README.md` 的构建运行、代码地图、术语;旧 `ROADMAP.md` 的通用纪律 | [`../guide/`](../guide/) | +| `docs/Disaggregated/devices/pin-verification-2026-09-07.md` | [`../guide/pin-verification-2026-09-07.md`](../../Disaggregated/guide/pin-verification-2026-09-07.md) | +| `ARCHITECTURE.md` 的设计正文(§1–§17、附 A / B) | [`../design/`](../../Disaggregated/design/) 下十个文件,编号不变;对照表在 [`../ARCHITECTURE.md`](../../Disaggregated/ARCHITECTURE.md) | +| 旧 `README.md` 的构建运行、代码地图、术语;旧 `ROADMAP.md` 的通用纪律 | [`../guide/`](../../Disaggregated/guide/) | **按编号引用的旧章节**(小节编号在新位置原样保留): @@ -51,8 +51,8 @@ | `MEASUREMENTS.md` §1 / §2 / §3 / §4 / §5 | [`p0`](p0/README.md) / [`p1`](p1/README.md) / [`p2`](p2/README.md) / [`p3a`](p3a/README.md) / [`p4a`](p4a/README.md) 的"实测"节 | | `MEASUREMENTS.md` §6 / §7 / §8 / §9 | [`p5`](p5/README.md) / [`p5b`](p5b/README.md) / [`p5c`](p5c/README.md) / [`p5d`](p5d/README.md) | | `MEASUREMENTS.md` §10 / §11 / §12 / §13 | [`p5e`](p5e/README.md)(§10、§11)/ [`p6`](p6/README.md) / [`p34b`](p34b/README.md) | -| `ARCHITECTURE.md` §17.1–§17.4 / §17.5 / §17.6 / §17.7 | [`p5`](p5/README.md) / [`p5b`](p5b/README.md) / [`p5c`](p5c/README.md) / [`p5e`](p5e/README.md) 的"落地形状"节([`../design/10-phase-shapes.md`](../design/10-phase-shapes.md) 留一张索引表) | -| `ROADMAP.md` 阶段表某行、"P5c 计划与审计"、"立即的下一项:P6.5 第一波"、债务表、开放问题 | 对应阶段 `README.md` 的"阶段表行"节;[`p5c`](p5c/README.md);[`p65`](p65/README.md);[`DEBTS.md`](DEBTS.md)(历史全表在 [`p5b`](p5b/README.md) 末节);[`OPEN-QUESTIONS.md`](OPEN-QUESTIONS.md) | +| `ARCHITECTURE.md` §17.1–§17.4 / §17.5 / §17.6 / §17.7 | [`p5`](p5/README.md) / [`p5b`](p5b/README.md) / [`p5c`](p5c/README.md) / [`p5e`](p5e/README.md) 的"落地形状"节([`../design/10-phase-shapes.md`](../../Disaggregated/design/10-phase-shapes.md) 留一张索引表) | +| `ROADMAP.md` 阶段表某行、"P5c 计划与审计"、"立即的下一项:P6.5 第一波"、债务表、开放问题 | 对应阶段 `README.md` 的"阶段表行"节;[`p5c`](p5c/README.md);[`p65`](p65/README.md);[`DEBTS.md`](../../Disaggregated/DEBTS.md)(历史全表在 [`p5b`](p5b/README.md) 末节);[`OPEN-QUESTIONS.md`](../../Disaggregated/OPEN-QUESTIONS.md) | | `ARCHITECTURE.md:NNN`、`MEASUREMENTS.md:NNN` 这类**行号**引用 | 指向写下它时的那个版本,今天已不对应;按上下文所说的节去找,或 `git show <当时的头>:docs/Disaggregated/<文件>` | | `~/w7/notes//.md` | `docs/Disaggregated/notes//.md`(这些笔记原先只存在于一台机器的 `~/w7/notes/`) | diff --git a/docs/Disaggregated/notes/anland/README.md b/docs/archive/notes/anland/README.md similarity index 99% rename from docs/Disaggregated/notes/anland/README.md rename to docs/archive/notes/anland/README.md index 2dcf26db..41608398 100644 --- a/docs/Disaggregated/notes/anland/README.md +++ b/docs/archive/notes/anland/README.md @@ -163,4 +163,4 @@ A 的原生 AHB 入口与 B 的扩展都要 Anland 作者合入,先给他们 ## 旁支 - Termux 原生(bionic)程序可以进程内直接加载 MobileGL(monolith,厂商驱动),不需要 split;帧交接同样是 A(A1、A2、A4)或 B(Surface 交给该进程)二选一。但 Termux 线目前基于 Anland 5.x(lfdevs 维护)。 -- 这项工作不在 [`../../ROADMAP.md`](../../ROADMAP.md) 里,要做是一个新阶段。 +- 这项工作不在 [`../../ROADMAP.md`](../../../Disaggregated/ROADMAP.md) 里,要做是一个新阶段。 diff --git a/docs/Disaggregated/notes/anland/brief-anland.md b/docs/archive/notes/anland/brief-anland.md similarity index 100% rename from docs/Disaggregated/notes/anland/brief-anland.md rename to docs/archive/notes/anland/brief-anland.md diff --git a/docs/Disaggregated/notes/anland/brief-mobilegl.md b/docs/archive/notes/anland/brief-mobilegl.md similarity index 100% rename from docs/Disaggregated/notes/anland/brief-mobilegl.md rename to docs/archive/notes/anland/brief-mobilegl.md diff --git a/docs/Disaggregated/notes/anland/changes-for-d1100-mali.md b/docs/archive/notes/anland/changes-for-d1100-mali.md similarity index 100% rename from docs/Disaggregated/notes/anland/changes-for-d1100-mali.md rename to docs/archive/notes/anland/changes-for-d1100-mali.md diff --git a/docs/Disaggregated/notes/anland/handoff-legacy-mobilegl-unified.md b/docs/archive/notes/anland/handoff-legacy-mobilegl-unified.md similarity index 100% rename from docs/Disaggregated/notes/anland/handoff-legacy-mobilegl-unified.md rename to docs/archive/notes/anland/handoff-legacy-mobilegl-unified.md diff --git a/docs/Disaggregated/notes/anland/kgsl-as-server.md b/docs/archive/notes/anland/kgsl-as-server.md similarity index 100% rename from docs/Disaggregated/notes/anland/kgsl-as-server.md rename to docs/archive/notes/anland/kgsl-as-server.md diff --git a/docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md b/docs/archive/notes/anland/plan-ahb-dmabuf.md similarity index 100% rename from docs/Disaggregated/notes/anland/plan-ahb-dmabuf.md rename to docs/archive/notes/anland/plan-ahb-dmabuf.md diff --git a/docs/Disaggregated/notes/anland/plan-x11-gpu.md b/docs/archive/notes/anland/plan-x11-gpu.md similarity index 100% rename from docs/Disaggregated/notes/anland/plan-x11-gpu.md rename to docs/archive/notes/anland/plan-x11-gpu.md diff --git a/docs/Disaggregated/notes/anland/report-anland.md b/docs/archive/notes/anland/report-anland.md similarity index 100% rename from docs/Disaggregated/notes/anland/report-anland.md rename to docs/archive/notes/anland/report-anland.md diff --git a/docs/Disaggregated/notes/anland/report-mobilegl.md b/docs/archive/notes/anland/report-mobilegl.md similarity index 100% rename from docs/Disaggregated/notes/anland/report-mobilegl.md rename to docs/archive/notes/anland/report-mobilegl.md diff --git a/docs/Disaggregated/notes/anland/runbook-plasma.md b/docs/archive/notes/anland/runbook-plasma.md similarity index 100% rename from docs/Disaggregated/notes/anland/runbook-plasma.md rename to docs/archive/notes/anland/runbook-plasma.md diff --git a/docs/Disaggregated/notes/handoff/review-b3r3-b2r4.md b/docs/archive/notes/handoff/review-b3r3-b2r4.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-b3r3-b2r4.md rename to docs/archive/notes/handoff/review-b3r3-b2r4.md diff --git a/docs/Disaggregated/notes/handoff/review-b4.md b/docs/archive/notes/handoff/review-b4.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-b4.md rename to docs/archive/notes/handoff/review-b4.md diff --git a/docs/Disaggregated/notes/handoff/review-f-fix.md b/docs/archive/notes/handoff/review-f-fix.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-f-fix.md rename to docs/archive/notes/handoff/review-f-fix.md diff --git a/docs/Disaggregated/notes/handoff/review-f2.md b/docs/archive/notes/handoff/review-f2.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-f2.md rename to docs/archive/notes/handoff/review-f2.md diff --git a/docs/Disaggregated/notes/handoff/review-g5.md b/docs/archive/notes/handoff/review-g5.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-g5.md rename to docs/archive/notes/handoff/review-g5.md diff --git a/docs/Disaggregated/notes/handoff/review-m2-r2.md b/docs/archive/notes/handoff/review-m2-r2.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-m2-r2.md rename to docs/archive/notes/handoff/review-m2-r2.md diff --git a/docs/Disaggregated/notes/handoff/review-m3.md b/docs/archive/notes/handoff/review-m3.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-m3.md rename to docs/archive/notes/handoff/review-m3.md diff --git a/docs/Disaggregated/notes/handoff/review-p7-closeout-codex.md b/docs/archive/notes/handoff/review-p7-closeout-codex.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-p7-closeout-codex.md rename to docs/archive/notes/handoff/review-p7-closeout-codex.md diff --git a/docs/Disaggregated/notes/handoff/review-ratchet88.md b/docs/archive/notes/handoff/review-ratchet88.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-ratchet88.md rename to docs/archive/notes/handoff/review-ratchet88.md diff --git a/docs/Disaggregated/notes/handoff/review-v1-fix-r2.md b/docs/archive/notes/handoff/review-v1-fix-r2.md similarity index 100% rename from docs/Disaggregated/notes/handoff/review-v1-fix-r2.md rename to docs/archive/notes/handoff/review-v1-fix-r2.md diff --git a/docs/Disaggregated/notes/p0/BRIEF-DOCS.md b/docs/archive/notes/p0/BRIEF-DOCS.md similarity index 100% rename from docs/Disaggregated/notes/p0/BRIEF-DOCS.md rename to docs/archive/notes/p0/BRIEF-DOCS.md diff --git a/docs/Disaggregated/notes/p0/BRIEF-P0.md b/docs/archive/notes/p0/BRIEF-P0.md similarity index 100% rename from docs/Disaggregated/notes/p0/BRIEF-P0.md rename to docs/archive/notes/p0/BRIEF-P0.md diff --git a/docs/Disaggregated/notes/p0/README.md b/docs/archive/notes/p0/README.md similarity index 96% rename from docs/Disaggregated/notes/p0/README.md rename to docs/archive/notes/p0/README.md index fe4ff5a7..a3b3c15c 100644 --- a/docs/Disaggregated/notes/p0/README.md +++ b/docs/archive/notes/p0/README.md @@ -1,6 +1,6 @@ # P0 — 卫生、度量、门、骨架(2026-09-05) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p0/p0-device-findings.md b/docs/archive/notes/p0/p0-device-findings.md similarity index 100% rename from docs/Disaggregated/notes/p0/p0-device-findings.md rename to docs/archive/notes/p0/p0-device-findings.md diff --git a/docs/Disaggregated/notes/p05/BRIEF-P05.md b/docs/archive/notes/p05/BRIEF-P05.md similarity index 100% rename from docs/Disaggregated/notes/p05/BRIEF-P05.md rename to docs/archive/notes/p05/BRIEF-P05.md diff --git a/docs/Disaggregated/notes/p05/README.md b/docs/archive/notes/p05/README.md similarity index 80% rename from docs/Disaggregated/notes/p05/README.md rename to docs/archive/notes/p05/README.md index 7f74dd4b..71ad05b6 100644 --- a/docs/Disaggregated/notes/p05/README.md +++ b/docs/archive/notes/p05/README.md @@ -1,6 +1,6 @@ # P0.5 — 值头与制品头抽取(`5d99ee43`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p05/p05-results/include-gate-review-v1.md b/docs/archive/notes/p05/p05-results/include-gate-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/include-gate-review-v1.md rename to docs/archive/notes/p05/p05-results/include-gate-review-v1.md diff --git a/docs/Disaggregated/notes/p05/p05-results/include-gate-v1.md b/docs/archive/notes/p05/p05-results/include-gate-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/include-gate-v1.md rename to docs/archive/notes/p05/p05-results/include-gate-v1.md diff --git a/docs/Disaggregated/notes/p05/p05-results/program-artifacts-review-v1.md b/docs/archive/notes/p05/p05-results/program-artifacts-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/program-artifacts-review-v1.md rename to docs/archive/notes/p05/p05-results/program-artifacts-review-v1.md diff --git a/docs/Disaggregated/notes/p05/p05-results/program-artifacts-v1.md b/docs/archive/notes/p05/p05-results/program-artifacts-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/program-artifacts-v1.md rename to docs/archive/notes/p05/p05-results/program-artifacts-v1.md diff --git a/docs/Disaggregated/notes/p05/p05-results/value-types-review-v1.md b/docs/archive/notes/p05/p05-results/value-types-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/value-types-review-v1.md rename to docs/archive/notes/p05/p05-results/value-types-review-v1.md diff --git a/docs/Disaggregated/notes/p05/p05-results/value-types-v1.md b/docs/archive/notes/p05/p05-results/value-types-v1.md similarity index 100% rename from docs/Disaggregated/notes/p05/p05-results/value-types-v1.md rename to docs/archive/notes/p05/p05-results/value-types-v1.md diff --git a/docs/Disaggregated/notes/p1/BRIEF-P1.md b/docs/archive/notes/p1/BRIEF-P1.md similarity index 100% rename from docs/Disaggregated/notes/p1/BRIEF-P1.md rename to docs/archive/notes/p1/BRIEF-P1.md diff --git a/docs/Disaggregated/notes/p1/P1-LANE-FINDINGS.md b/docs/archive/notes/p1/P1-LANE-FINDINGS.md similarity index 100% rename from docs/Disaggregated/notes/p1/P1-LANE-FINDINGS.md rename to docs/archive/notes/p1/P1-LANE-FINDINGS.md diff --git a/docs/Disaggregated/notes/p1/README.md b/docs/archive/notes/p1/README.md similarity index 92% rename from docs/Disaggregated/notes/p1/README.md rename to docs/archive/notes/p1/README.md index d8e5ae6a..798f2166 100644 --- a/docs/Disaggregated/notes/p1/README.md +++ b/docs/archive/notes/p1/README.md @@ -1,6 +1,6 @@ # P1 — `PipeInputs` 替换与 verify harness -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p1/p1-results/core-contract.md b/docs/archive/notes/p1/p1-results/core-contract.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-contract.md rename to docs/archive/notes/p1/p1-results/core-contract.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-review-v1.md b/docs/archive/notes/p1/p1-results/core-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-review-v1.md rename to docs/archive/notes/p1/p1-results/core-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-review-v2.md b/docs/archive/notes/p1/p1-results/core-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-review-v2.md rename to docs/archive/notes/p1/p1-results/core-review-v2.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-review-v3.md b/docs/archive/notes/p1/p1-results/core-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-review-v3.md rename to docs/archive/notes/p1/p1-results/core-review-v3.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-v1.md b/docs/archive/notes/p1/p1-results/core-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-v1.md rename to docs/archive/notes/p1/p1-results/core-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-v2.md b/docs/archive/notes/p1/p1-results/core-v2.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-v2.md rename to docs/archive/notes/p1/p1-results/core-v2.md diff --git a/docs/Disaggregated/notes/p1/p1-results/core-v3.md b/docs/archive/notes/p1/p1-results/core-v3.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/core-v3.md rename to docs/archive/notes/p1/p1-results/core-v3.md diff --git a/docs/Disaggregated/notes/p1/p1-results/espryt-review-v1.md b/docs/archive/notes/p1/p1-results/espryt-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/espryt-review-v1.md rename to docs/archive/notes/p1/p1-results/espryt-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/espryt-v1.md b/docs/archive/notes/p1/p1-results/espryt-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/espryt-v1.md rename to docs/archive/notes/p1/p1-results/espryt-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/fix-core-review-v1.md b/docs/archive/notes/p1/p1-results/fix-core-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/fix-core-review-v1.md rename to docs/archive/notes/p1/p1-results/fix-core-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/fix-core-v1.md b/docs/archive/notes/p1/p1-results/fix-core-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/fix-core-v1.md rename to docs/archive/notes/p1/p1-results/fix-core-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/fix-tests-review-v1.md b/docs/archive/notes/p1/p1-results/fix-tests-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/fix-tests-review-v1.md rename to docs/archive/notes/p1/p1-results/fix-tests-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/fix-tests-v1.md b/docs/archive/notes/p1/p1-results/fix-tests-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/fix-tests-v1.md rename to docs/archive/notes/p1/p1-results/fix-tests-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/magma-review-v1.md b/docs/archive/notes/p1/p1-results/magma-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/magma-review-v1.md rename to docs/archive/notes/p1/p1-results/magma-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/magma-v1.md b/docs/archive/notes/p1/p1-results/magma-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/magma-v1.md rename to docs/archive/notes/p1/p1-results/magma-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/verify-review-v1.md b/docs/archive/notes/p1/p1-results/verify-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/verify-review-v1.md rename to docs/archive/notes/p1/p1-results/verify-review-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/verify-review-v2.md b/docs/archive/notes/p1/p1-results/verify-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/verify-review-v2.md rename to docs/archive/notes/p1/p1-results/verify-review-v2.md diff --git a/docs/Disaggregated/notes/p1/p1-results/verify-v1.md b/docs/archive/notes/p1/p1-results/verify-v1.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/verify-v1.md rename to docs/archive/notes/p1/p1-results/verify-v1.md diff --git a/docs/Disaggregated/notes/p1/p1-results/verify-v2.md b/docs/archive/notes/p1/p1-results/verify-v2.md similarity index 100% rename from docs/Disaggregated/notes/p1/p1-results/verify-v2.md rename to docs/archive/notes/p1/p1-results/verify-v2.md diff --git a/docs/Disaggregated/notes/p10/A-FENCE-POLL.md b/docs/archive/notes/p10/A-FENCE-POLL.md similarity index 97% rename from docs/Disaggregated/notes/p10/A-FENCE-POLL.md rename to docs/archive/notes/p10/A-FENCE-POLL.md index 1f29a2f3..16856046 100644 --- a/docs/Disaggregated/notes/p10/A-FENCE-POLL.md +++ b/docs/archive/notes/p10/A-FENCE-POLL.md @@ -1,6 +1,6 @@ # P10 A:fence 轮询本地作答——配对测量与 Espryt 发现 -2026-09-29,`p10/main@8d0a1b6c`,主机 WSL Arch(Espryt = mesa llvmpipe ES 3.2;Magma = lavapipe)。协议与门见 [`CONTRACT-P10.md`](../../../../MobileGL/MG_Remote/CONTRACT-P10.md) §1。只记录、不设门。 +2026-09-29,`p10/main@8d0a1b6c`,主机 WSL Arch(Espryt = mesa llvmpipe ES 3.2;Magma = lavapipe)。协议与门见 [`CONTRACT-P10.md`](../../contracts/CONTRACT-P10.md) §1。只记录、不设门。 ## 负载 diff --git a/docs/Disaggregated/notes/p10/C-MEASUREMENTS.md b/docs/archive/notes/p10/C-MEASUREMENTS.md similarity index 97% rename from docs/Disaggregated/notes/p10/C-MEASUREMENTS.md rename to docs/archive/notes/p10/C-MEASUREMENTS.md index 8beb9926..a30bfd3b 100644 --- a/docs/Disaggregated/notes/p10/C-MEASUREMENTS.md +++ b/docs/archive/notes/p10/C-MEASUREMENTS.md @@ -25,7 +25,7 @@ | tcp · openra | 399.0 | 384.9 | 391.8 | 最多 8% | 0.16–0.19 | 2.1 | 1.8 | | shm · rd12 | 120.2 | 120.1 | — | ≤ 0.4% | 0 | 0.1 | 8.2 | -- **结论:loopback 上 credit 没有噪声以外的影响。** rd12·tcp 的 19.4 ms 帧由 client CPU(~9.9 ms)和生产者在传输里的停车(~11.2 ms,发送 + 环 / stage / ack 等待)组成,credit 等待只有 ~0.2 ms。五臂报告(09-28)建议 #2"credit 2"在 loopback 上没有收益;要追的是 stream 传输的停车(性能债,[`../DEBTS.md`](../DEBTS.md))。 +- **结论:loopback 上 credit 没有噪声以外的影响。** rd12·tcp 的 19.4 ms 帧由 client CPU(~9.9 ms)和生产者在传输里的停车(~11.2 ms,发送 + 环 / stage / ack 等待)组成,credit 等待只有 ~0.2 ms。五臂报告(09-28)建议 #2"credit 2"在 loopback 上没有收益;要追的是 stream 传输的停车(性能债,[`../DEBTS.md`](../../../Disaggregated/DEBTS.md))。 - 跨机(Wi-Fi)credit 1 → 2 的 +26% 仍以 P12 的数字为准([`../p12/CROSSHOST-ACCEPTANCE.md`](../p12/CROSSHOST-ACCEPTANCE.md)),那里瓶颈是往返延迟。 - 五臂报告里 tcp-loopback rd12 的 21–23 fps(74% 在 credit 等待)是旧构建、未定频的结果,与本次不可直接比较。 - Magma 没测:`profile_matrix.sh` / `run_matrix.sh` 在两处写死了 DirectGLES。 diff --git a/docs/Disaggregated/notes/p10/INTEGRATOR-DECISIONS-P10.md b/docs/archive/notes/p10/INTEGRATOR-DECISIONS-P10.md similarity index 100% rename from docs/Disaggregated/notes/p10/INTEGRATOR-DECISIONS-P10.md rename to docs/archive/notes/p10/INTEGRATOR-DECISIONS-P10.md diff --git a/docs/Disaggregated/notes/p10/PLAN-P10.md b/docs/archive/notes/p10/PLAN-P10.md similarity index 100% rename from docs/Disaggregated/notes/p10/PLAN-P10.md rename to docs/archive/notes/p10/PLAN-P10.md diff --git a/docs/Disaggregated/notes/p10/README.md b/docs/archive/notes/p10/README.md similarity index 96% rename from docs/Disaggregated/notes/p10/README.md rename to docs/archive/notes/p10/README.md index 6ec27ed0..0e104eba 100644 --- a/docs/Disaggregated/notes/p10/README.md +++ b/docs/archive/notes/p10/README.md @@ -10,7 +10,7 @@ > > 门(集成头):见 ID-P10-12。 > -> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录)。 +> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md) 阶段表移入,原文照录)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p11/A-DEVICE.md b/docs/archive/notes/p11/A-DEVICE.md similarity index 100% rename from docs/Disaggregated/notes/p11/A-DEVICE.md rename to docs/archive/notes/p11/A-DEVICE.md diff --git a/docs/Disaggregated/notes/p11/B0-CROSS-APP.md b/docs/archive/notes/p11/B0-CROSS-APP.md similarity index 100% rename from docs/Disaggregated/notes/p11/B0-CROSS-APP.md rename to docs/archive/notes/p11/B0-CROSS-APP.md diff --git a/docs/Disaggregated/notes/p11/B2-DEVICE.md b/docs/archive/notes/p11/B2-DEVICE.md similarity index 100% rename from docs/Disaggregated/notes/p11/B2-DEVICE.md rename to docs/archive/notes/p11/B2-DEVICE.md diff --git a/docs/Disaggregated/notes/p11/HSPIKE.md b/docs/archive/notes/p11/HSPIKE.md similarity index 100% rename from docs/Disaggregated/notes/p11/HSPIKE.md rename to docs/archive/notes/p11/HSPIKE.md diff --git a/docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md b/docs/archive/notes/p11/INTEGRATOR-DECISIONS-P11.md similarity index 100% rename from docs/Disaggregated/notes/p11/INTEGRATOR-DECISIONS-P11.md rename to docs/archive/notes/p11/INTEGRATOR-DECISIONS-P11.md diff --git a/docs/Disaggregated/notes/p11/PLAN-P11.md b/docs/archive/notes/p11/PLAN-P11.md similarity index 100% rename from docs/Disaggregated/notes/p11/PLAN-P11.md rename to docs/archive/notes/p11/PLAN-P11.md diff --git a/docs/Disaggregated/notes/p11/README.md b/docs/archive/notes/p11/README.md similarity index 97% rename from docs/Disaggregated/notes/p11/README.md rename to docs/archive/notes/p11/README.md index c7e0e47f..99b0bef1 100644 --- a/docs/Disaggregated/notes/p11/README.md +++ b/docs/archive/notes/p11/README.md @@ -15,7 +15,7 @@ > > 门(收官头):见 ID-P11-20。 > -> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录)。 +> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md) 阶段表移入,原文照录)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p12/BRIEF-onscreen.md b/docs/archive/notes/p12/BRIEF-onscreen.md similarity index 100% rename from docs/Disaggregated/notes/p12/BRIEF-onscreen.md rename to docs/archive/notes/p12/BRIEF-onscreen.md diff --git a/docs/Disaggregated/notes/p12/CREATE-WINDOW-MEASURED.md b/docs/archive/notes/p12/CREATE-WINDOW-MEASURED.md similarity index 100% rename from docs/Disaggregated/notes/p12/CREATE-WINDOW-MEASURED.md rename to docs/archive/notes/p12/CREATE-WINDOW-MEASURED.md diff --git a/docs/Disaggregated/notes/p12/CROSSHOST-ACCEPTANCE.md b/docs/archive/notes/p12/CROSSHOST-ACCEPTANCE.md similarity index 100% rename from docs/Disaggregated/notes/p12/CROSSHOST-ACCEPTANCE.md rename to docs/archive/notes/p12/CROSSHOST-ACCEPTANCE.md diff --git a/docs/Disaggregated/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md b/docs/archive/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md similarity index 100% rename from docs/Disaggregated/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md rename to docs/archive/notes/p12/DEVICELOST-AND-UPLOAD-WAITS.md diff --git a/docs/Disaggregated/notes/p12/FCL-ACCEPTANCE.md b/docs/archive/notes/p12/FCL-ACCEPTANCE.md similarity index 100% rename from docs/Disaggregated/notes/p12/FCL-ACCEPTANCE.md rename to docs/archive/notes/p12/FCL-ACCEPTANCE.md diff --git a/docs/Disaggregated/notes/p12/INTEGRATOR-DECISIONS-P12.md b/docs/archive/notes/p12/INTEGRATOR-DECISIONS-P12.md similarity index 100% rename from docs/Disaggregated/notes/p12/INTEGRATOR-DECISIONS-P12.md rename to docs/archive/notes/p12/INTEGRATOR-DECISIONS-P12.md diff --git a/docs/Disaggregated/notes/p12/PLAN-P12.md b/docs/archive/notes/p12/PLAN-P12.md similarity index 99% rename from docs/Disaggregated/notes/p12/PLAN-P12.md rename to docs/archive/notes/p12/PLAN-P12.md index 0e67b4a0..c8706bc7 100644 --- a/docs/Disaggregated/notes/p12/PLAN-P12.md +++ b/docs/archive/notes/p12/PLAN-P12.md @@ -75,7 +75,7 @@ |---|---| | in-process server 的 `unix:` 监听 | ✅ 已做(`c16fb5a8a`) | | FCL env 与 plugin APK 开关表接线 | ✅ FCL 走 `/sdcard/FCL/mg_env.txt`;plugin / trace 两个 APK 都带 Render Server 屏与二进制(`1987bdff5`);FCL fork 新增版本设置「游戏退到后台时不暂停」(FCL 仓库,已提交 `241471515`) | -| DirectGLES `g_Display` / `g_Surface` / `g_Context` 去全局 | 不做:每进程一个会话时不需要 → [`DEBTS.md`](../DEBTS.md) | +| DirectGLES `g_Display` / `g_Surface` / `g_Context` 去全局 | 不做:每进程一个会话时不需要 → [`DEBTS.md`](../../../Disaggregated/DEBTS.md) | | cached-app freezer 的完整处理 | 不做:文档从未定义它;FCL 后台暂停的实测答案见契约 → DEBTS | | 多 context | 不做(同上)→ DEBTS | | D8 窗口种类白名单(拒 X11 / Win32Hwnd / None) | 不做:仍接受并把 token 强转为指针 → DEBTS(无主,等 Windows / X11 client) | diff --git a/docs/Disaggregated/notes/p12/README.md b/docs/archive/notes/p12/README.md similarity index 91% rename from docs/Disaggregated/notes/p12/README.md rename to docs/archive/notes/p12/README.md index f62657ca..b02e4ee0 100644 --- a/docs/Disaggregated/notes/p12/README.md +++ b/docs/archive/notes/p12/README.md @@ -1,14 +1,14 @@ # P12 — Android 生产窗口路径(「server 自有屏幕窗口」子集已实现,未收官) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 -- 当前阶段。状态摘要在 [`../../CURRENT_STAGE_PROGRESS.md`](../../CURRENT_STAGE_PROGRESS.md);计划与交接 [`PLAN-P12.md`](PLAN-P12.md);任务书 [`BRIEF-onscreen.md`](BRIEF-onscreen.md);裁定 [`INTEGRATOR-DECISIONS-P12.md`](INTEGRATOR-DECISIONS-P12.md)(ID-P12-1..15);只读审计 `map-*.md` 四份。 +- 当前阶段。状态摘要在 [`../../CURRENT_STAGE_PROGRESS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md);计划与交接 [`PLAN-P12.md`](PLAN-P12.md);任务书 [`BRIEF-onscreen.md`](BRIEF-onscreen.md);裁定 [`INTEGRATOR-DECISIONS-P12.md`](INTEGRATOR-DECISIONS-P12.md)(ID-P12-1..15);只读审计 `map-*.md` 四份。 - 形状:server APK 自建 `ANativeWindow`(`MobileGLDisplayActivity` 的 SurfaceView,进程内 TCP server,会话串行)把渲染流**上屏**;离屏路径保留、同一时刻一条活跃;client 以 `WindowKind::ServerOwned`(控制修订 3)**完全无头**接入,几何由 server 回传;失窗 → `Fatal{ServerWindowLost}` → 干净 device-lost。 - 进展:15 个 `(P12)` 提交 + 审查轮修复(10 个问题,ID-P12-5..11)已并入 `feat/disaggregated`;主机门绿(ID-P12-14)、G1 成立(ID-P12-15);审查后在 `1fb18d9e` 上完成 P12 定向 CTest 46/46 和 Redmi 真机七项复测。当前分支 `0fe01588` 后续提交只改了文档、文档检查范围和基准脚本说明文字,未改 P12 实现。 - **2026-09-25 追加(会话交接 §4/§5.1)**:**device-lost 的 DECLINED 回复容忍**与**纹理上传的等待粒度**已落地,各有自己的 red-once 门(前者就是进世界后 `Fatal{ProtocolCorruption, "Fence.reply"}` 那条崩溃;后者让单条纯上传的回包等待 1 → 0)。真机端到端(进世界不崩、那一帧墙钟)与 G1 本机复核仍待做,见 [`DEVICELOST-AND-UPLOAD-WAITS.md`](DEVICELOST-AND-UPLOAD-WAITS.md)。 -- 出口门 (b) 已于 2026-09-28、(a) 已于 2026-09-29 通过([`CROSSHOST-ACCEPTANCE.md`](CROSSHOST-ACCEPTANCE.md)、[`FCL-ACCEPTANCE.md`](FCL-ACCEPTANCE.md));契约 `MG_Remote/CONTRACT-P12.md` 已写。未做的(DirectGLES 去全局、freezer、多 context、D8 白名单、TLS)已转入 [`DEBTS.md`](../DEBTS.md)。 +- 出口门 (b) 已于 2026-09-28、(a) 已于 2026-09-29 通过([`CROSSHOST-ACCEPTANCE.md`](CROSSHOST-ACCEPTANCE.md)、[`FCL-ACCEPTANCE.md`](FCL-ACCEPTANCE.md));契约 `MG_Remote/CONTRACT-P12.md` 已写。未做的(DirectGLES 去全局、freezer、多 context、D8 白名单、TLS)已转入 [`DEBTS.md`](../../../Disaggregated/DEBTS.md)。 ## 阶段表行(原 `ROADMAP.md`) @@ -49,7 +49,7 @@ ## 当前状态详情(2026-09-24,原 `CURRENT_STAGE_PROGRESS.md` 正文) -> 顶层 [`CURRENT_STAGE_PROGRESS.md`](../../CURRENT_STAGE_PROGRESS.md) 只留摘要;带裁定编号的落地表、门表、余项清单与证据位置在这里。 +> 顶层 [`CURRENT_STAGE_PROGRESS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md) 只留摘要;带裁定编号的落地表、门表、余项清单与证据位置在这里。 ### 1. 一句话(2026-09-24 历史快照;现状见上方复测补记) @@ -83,7 +83,7 @@ Android 上的 server 自建窗口(自己的 SurfaceView)把 IPC 渲染流** P12 已收官(2026-09-29):出口门 (a)(b) 通过、契约已写、`gate.sh` 的 G1 已改、余项已处置([`PLAN-P12.md`](PLAN-P12.md) §3)。 -1. 其后按 [`ROADMAP.md`](../../ROADMAP.md):monolith 跑道 P8;IPC 跑道 P9 → P10 → P11;P6.5 残余(39 例 device 矩阵 + 必测数)与 P3b/P4b 余项并行;`CONTRACT-P7.md` §12 的记录债按阶段认领。 +1. 其后按 [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md):monolith 跑道 P8;IPC 跑道 P9 → P10 → P11;P6.5 残余(39 例 device 矩阵 + 必测数)与 P3b/P4b 余项并行;`CONTRACT-P7.md` §12 的记录债按阶段认领。 ### 6. 阻塞 / 需要人 @@ -92,7 +92,7 @@ P12 已收官(2026-09-29):出口门 (a)(b) 通过、契约已写、`gate.s ### 7. 真机与证据 -- 当前 APK `26.09.29b7b28-trace`(控制修订 3,与 P7 终局窗口的 p7w8 server 不兼容);设备 Redmi `2f7cbe2e`(Adreno 830),定频协议 [`devices/pin-verification-2026-09-07.md`](../../guide/pin-verification-2026-09-07.md)。 +- 当前 APK `26.09.29b7b28-trace`(控制修订 3,与 P7 终局窗口的 p7w8 server 不兼容);设备 Redmi `2f7cbe2e`(Adreno 830),定频协议 [`devices/pin-verification-2026-09-07.md`](../../../Disaggregated/guide/pin-verification-2026-09-07.md)。 - 真机证据 `notes/p12/device/`(`evidence-strip.png` 九格拼图,`trial-*/` 是按 head 归档的旧轮次);主机门日志 `notes/p12/gate/`;设备脚本 `notes/p12/android/`。 ## 本目录 diff --git a/docs/Disaggregated/notes/p12/UNPUBLISH-GUARD-SIGNALS.md b/docs/archive/notes/p12/UNPUBLISH-GUARD-SIGNALS.md similarity index 100% rename from docs/Disaggregated/notes/p12/UNPUBLISH-GUARD-SIGNALS.md rename to docs/archive/notes/p12/UNPUBLISH-GUARD-SIGNALS.md diff --git a/docs/Disaggregated/notes/p12/android/build.sh b/docs/archive/notes/p12/android/build.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/build.sh rename to docs/archive/notes/p12/android/build.sh diff --git a/docs/Disaggregated/notes/p12/android/check1.sh b/docs/archive/notes/p12/android/check1.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/check1.sh rename to docs/archive/notes/p12/android/check1.sh diff --git a/docs/Disaggregated/notes/p12/android/check3.sh b/docs/archive/notes/p12/android/check3.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/check3.sh rename to docs/archive/notes/p12/android/check3.sh diff --git a/docs/Disaggregated/notes/p12/android/check4.sh b/docs/archive/notes/p12/android/check4.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/check4.sh rename to docs/archive/notes/p12/android/check4.sh diff --git a/docs/Disaggregated/notes/p12/android/check5.sh b/docs/archive/notes/p12/android/check5.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/check5.sh rename to docs/archive/notes/p12/android/check5.sh diff --git a/docs/Disaggregated/notes/p12/android/check7.sh b/docs/archive/notes/p12/android/check7.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/check7.sh rename to docs/archive/notes/p12/android/check7.sh diff --git a/docs/Disaggregated/notes/p12/android/cleanup.sh b/docs/archive/notes/p12/android/cleanup.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/cleanup.sh rename to docs/archive/notes/p12/android/cleanup.sh diff --git a/docs/Disaggregated/notes/p12/android/client-devicelost-probe.patch b/docs/archive/notes/p12/android/client-devicelost-probe.patch similarity index 100% rename from docs/Disaggregated/notes/p12/android/client-devicelost-probe.patch rename to docs/archive/notes/p12/android/client-devicelost-probe.patch diff --git a/docs/Disaggregated/notes/p12/android/commit1.sh b/docs/archive/notes/p12/android/commit1.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/commit1.sh rename to docs/archive/notes/p12/android/commit1.sh diff --git a/docs/Disaggregated/notes/p12/android/commit2.sh b/docs/archive/notes/p12/android/commit2.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/commit2.sh rename to docs/archive/notes/p12/android/commit2.sh diff --git a/docs/Disaggregated/notes/p12/android/commit3.sh b/docs/archive/notes/p12/android/commit3.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/commit3.sh rename to docs/archive/notes/p12/android/commit3.sh diff --git a/docs/Disaggregated/notes/p12/android/dev.sh b/docs/archive/notes/p12/android/dev.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/dev.sh rename to docs/archive/notes/p12/android/dev.sh diff --git a/docs/Disaggregated/notes/p12/android/final-run.sh b/docs/archive/notes/p12/android/final-run.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/final-run.sh rename to docs/archive/notes/p12/android/final-run.sh diff --git a/docs/Disaggregated/notes/p12/android/g1.sh b/docs/archive/notes/p12/android/g1.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/g1.sh rename to docs/archive/notes/p12/android/g1.sh diff --git a/docs/Disaggregated/notes/p12/android/host-inproc-server.py b/docs/archive/notes/p12/android/host-inproc-server.py similarity index 100% rename from docs/Disaggregated/notes/p12/android/host-inproc-server.py rename to docs/archive/notes/p12/android/host-inproc-server.py diff --git a/docs/Disaggregated/notes/p12/android/hostkill.sh b/docs/archive/notes/p12/android/hostkill.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/hostkill.sh rename to docs/archive/notes/p12/android/hostkill.sh diff --git a/docs/Disaggregated/notes/p12/android/hostrepro.sh b/docs/archive/notes/p12/android/hostrepro.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/hostrepro.sh rename to docs/archive/notes/p12/android/hostrepro.sh diff --git a/docs/Disaggregated/notes/p12/android/launch-build.sh b/docs/archive/notes/p12/android/launch-build.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/launch-build.sh rename to docs/archive/notes/p12/android/launch-build.sh diff --git a/docs/Disaggregated/notes/p12/android/pidlines.sh b/docs/archive/notes/p12/android/pidlines.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/pidlines.sh rename to docs/archive/notes/p12/android/pidlines.sh diff --git a/docs/Disaggregated/notes/p12/android/precheck.sh b/docs/archive/notes/p12/android/precheck.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/precheck.sh rename to docs/archive/notes/p12/android/precheck.sh diff --git a/docs/Disaggregated/notes/p12/android/redonce-tools.sh b/docs/archive/notes/p12/android/redonce-tools.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/redonce-tools.sh rename to docs/archive/notes/p12/android/redonce-tools.sh diff --git a/docs/Disaggregated/notes/p12/android/redonce-twins.sh b/docs/archive/notes/p12/android/redonce-twins.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/redonce-twins.sh rename to docs/archive/notes/p12/android/redonce-twins.sh diff --git a/docs/Disaggregated/notes/p12/android/run-tool-tests.sh b/docs/archive/notes/p12/android/run-tool-tests.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/run-tool-tests.sh rename to docs/archive/notes/p12/android/run-tool-tests.sh diff --git a/docs/Disaggregated/notes/p12/android/sanity-test-append.cpp b/docs/archive/notes/p12/android/sanity-test-append.cpp similarity index 100% rename from docs/Disaggregated/notes/p12/android/sanity-test-append.cpp rename to docs/archive/notes/p12/android/sanity-test-append.cpp diff --git a/docs/Disaggregated/notes/p12/android/show.sh b/docs/archive/notes/p12/android/show.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/show.sh rename to docs/archive/notes/p12/android/show.sh diff --git a/docs/Disaggregated/notes/p12/android/thumbs.py b/docs/archive/notes/p12/android/thumbs.py similarity index 100% rename from docs/Disaggregated/notes/p12/android/thumbs.py rename to docs/archive/notes/p12/android/thumbs.py diff --git a/docs/Disaggregated/notes/p12/android/verify-apk.sh b/docs/archive/notes/p12/android/verify-apk.sh similarity index 100% rename from docs/Disaggregated/notes/p12/android/verify-apk.sh rename to docs/archive/notes/p12/android/verify-apk.sh diff --git a/docs/Disaggregated/notes/p12/device/00-found-state.txt b/docs/archive/notes/p12/device/00-found-state.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/00-found-state.txt rename to docs/archive/notes/p12/device/00-found-state.txt diff --git a/docs/Disaggregated/notes/p12/device/1-onscreen-espryt/check.log b/docs/archive/notes/p12/device/1-onscreen-espryt/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/1-onscreen-espryt/check.log rename to docs/archive/notes/p12/device/1-onscreen-espryt/check.log diff --git a/docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay.png b/docs/archive/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay.png rename to docs/archive/notes/p12/device/1-onscreen-espryt/replay/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/output/result.json b/docs/archive/notes/p12/device/1-onscreen-espryt/replay/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/1-onscreen-espryt/replay/output/result.json rename to docs/archive/notes/p12/device/1-onscreen-espryt/replay/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/1-onscreen-espryt/tds-start.txt b/docs/archive/notes/p12/device/1-onscreen-espryt/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/1-onscreen-espryt/tds-start.txt rename to docs/archive/notes/p12/device/1-onscreen-espryt/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/check.log b/docs/archive/notes/p12/device/2-onscreen-magma/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/check.log rename to docs/archive/notes/p12/device/2-onscreen-magma/check.log diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay.png b/docs/archive/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay.png rename to docs/archive/notes/p12/device/2-onscreen-magma/replay/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/output/result.json b/docs/archive/notes/p12/device/2-onscreen-magma/replay/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/replay/output/result.json rename to docs/archive/notes/p12/device/2-onscreen-magma/replay/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/2-onscreen-magma/second/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/2-onscreen-magma/second/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/evidence-during-replay.png b/docs/archive/notes/p12/device/2-onscreen-magma/second/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/evidence-during-replay.png rename to docs/archive/notes/p12/device/2-onscreen-magma/second/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/output/result.json b/docs/archive/notes/p12/device/2-onscreen-magma/second/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/second/output/result.json rename to docs/archive/notes/p12/device/2-onscreen-magma/second/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/2-onscreen-magma/tds-start.txt b/docs/archive/notes/p12/device/2-onscreen-magma/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/2-onscreen-magma/tds-start.txt rename to docs/archive/notes/p12/device/2-onscreen-magma/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/check.log b/docs/archive/notes/p12/device/3-sequential-and-busy/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/check.log rename to docs/archive/notes/p12/device/3-sequential-and-busy/check.log diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay.png b/docs/archive/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay.png rename to docs/archive/notes/p12/device/3-sequential-and-busy/long/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/output/result.json b/docs/archive/notes/p12/device/3-sequential-and-busy/long/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/long/output/result.json rename to docs/archive/notes/p12/device/3-sequential-and-busy/long/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay.png b/docs/archive/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay.png rename to docs/archive/notes/p12/device/3-sequential-and-busy/second/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/output/result.json b/docs/archive/notes/p12/device/3-sequential-and-busy/second/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/3-sequential-and-busy/second/output/result.json rename to docs/archive/notes/p12/device/3-sequential-and-busy/second/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/4-window-lost/after/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/4-window-lost/after/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/4-window-lost/after/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/4-window-lost/after/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/4-window-lost/after/evidence-during-replay.png b/docs/archive/notes/p12/device/4-window-lost/after/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/4-window-lost/after/evidence-during-replay.png rename to docs/archive/notes/p12/device/4-window-lost/after/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/4-window-lost/after/output/result.json b/docs/archive/notes/p12/device/4-window-lost/after/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/4-window-lost/after/output/result.json rename to docs/archive/notes/p12/device/4-window-lost/after/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/4-window-lost/check.log b/docs/archive/notes/p12/device/4-window-lost/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/4-window-lost/check.log rename to docs/archive/notes/p12/device/4-window-lost/check.log diff --git a/docs/Disaggregated/notes/p12/device/4-window-lost/tds-restart.txt b/docs/archive/notes/p12/device/4-window-lost/tds-restart.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/4-window-lost/tds-restart.txt rename to docs/archive/notes/p12/device/4-window-lost/tds-restart.txt diff --git a/docs/Disaggregated/notes/p12/device/5-offscreen-service/check.log b/docs/archive/notes/p12/device/5-offscreen-service/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/5-offscreen-service/check.log rename to docs/archive/notes/p12/device/5-offscreen-service/check.log diff --git a/docs/Disaggregated/notes/p12/device/5-offscreen-service/offscreen/output/result.json b/docs/archive/notes/p12/device/5-offscreen-service/offscreen/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/5-offscreen-service/offscreen/output/result.json rename to docs/archive/notes/p12/device/5-offscreen-service/offscreen/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/5-offscreen-service/ps-after-start.txt b/docs/archive/notes/p12/device/5-offscreen-service/ps-after-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/5-offscreen-service/ps-after-start.txt rename to docs/archive/notes/p12/device/5-offscreen-service/ps-after-start.txt diff --git a/docs/Disaggregated/notes/p12/device/5-offscreen-service/tds-start.txt b/docs/archive/notes/p12/device/5-offscreen-service/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/5-offscreen-service/tds-start.txt rename to docs/archive/notes/p12/device/5-offscreen-service/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/check.log b/docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/check.log rename to docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/check.log diff --git a/docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/next/output/result.json b/docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/next/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/next/output/result.json rename to docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/next/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/ps-end.txt b/docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/ps-end.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/ps-end.txt rename to docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/ps-end.txt diff --git a/docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/refused/output/result.json b/docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/refused/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/6-negative-serverowned-vs-offscreen/refused/output/result.json rename to docs/archive/notes/p12/device/6-negative-serverowned-vs-offscreen/refused/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/check.log b/docs/archive/notes/p12/device/7-one-server/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/check.log rename to docs/archive/notes/p12/device/7-one-server/check.log diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/ps-after-activity.txt b/docs/archive/notes/p12/device/7-one-server/ps-after-activity.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/ps-after-activity.txt rename to docs/archive/notes/p12/device/7-one-server/ps-after-activity.txt diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/ps-after-service.txt b/docs/archive/notes/p12/device/7-one-server/ps-after-service.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/ps-after-service.txt rename to docs/archive/notes/p12/device/7-one-server/ps-after-service.txt diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/ps-before.txt b/docs/archive/notes/p12/device/7-one-server/ps-before.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/ps-before.txt rename to docs/archive/notes/p12/device/7-one-server/ps-before.txt diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/tds-activity.txt b/docs/archive/notes/p12/device/7-one-server/tds-activity.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/tds-activity.txt rename to docs/archive/notes/p12/device/7-one-server/tds-activity.txt diff --git a/docs/Disaggregated/notes/p12/device/7-one-server/tds-service2.txt b/docs/archive/notes/p12/device/7-one-server/tds-service2.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/7-one-server/tds-service2.txt rename to docs/archive/notes/p12/device/7-one-server/tds-service2.txt diff --git a/docs/Disaggregated/notes/p12/device/99-cleanup/final-state.txt b/docs/archive/notes/p12/device/99-cleanup/final-state.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/99-cleanup/final-state.txt rename to docs/archive/notes/p12/device/99-cleanup/final-state.txt diff --git a/docs/Disaggregated/notes/p12/device/evidence-strip.png b/docs/archive/notes/p12/device/evidence-strip.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/evidence-strip.png rename to docs/archive/notes/p12/device/evidence-strip.png diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/check.log b/docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/check.log rename to docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/output/result.json b/docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/output/result.json rename to docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/replay/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/tds-start.txt b/docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/1-onscreen-espryt/tds-start.txt rename to docs/archive/notes/p12/device/trial-984db455/1-onscreen-espryt/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/check.log b/docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/check.log rename to docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/output/result.json b/docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-984db455/3-sequential-and-busy/second/output/result.json rename to docs/archive/notes/p12/device/trial-984db455/3-sequential-and-busy/second/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/check.log b/docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/replay/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/tds-start.txt b/docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/1-onscreen-espryt/tds-start.txt rename to docs/archive/notes/p12/device/trial-a4a940db/1-onscreen-espryt/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/check.log b/docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/replay/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/tds-start.txt b/docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/2-onscreen-magma/tds-start.txt rename to docs/archive/notes/p12/device/trial-a4a940db/2-onscreen-magma/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/check.log b/docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/long/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/long/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/long/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/long/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/3-sequential-and-busy/second/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay-540p.png b/docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay-540p.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay-540p.png rename to docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay-540p.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay.png b/docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay.png similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay.png rename to docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/evidence-during-replay.png diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/after/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/after/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/check.log b/docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/tds-restart.txt b/docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/tds-restart.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/4-window-lost/tds-restart.txt rename to docs/archive/notes/p12/device/trial-a4a940db/4-window-lost/tds-restart.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/check.log b/docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/offscreen/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/offscreen/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/offscreen/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/offscreen/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/ps-after-start.txt b/docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/ps-after-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/ps-after-start.txt rename to docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/ps-after-start.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/tds-start.txt b/docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/tds-start.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/5-offscreen-service/tds-start.txt rename to docs/archive/notes/p12/device/trial-a4a940db/5-offscreen-service/tds-start.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/check.log b/docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/next/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/next/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/next/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/next/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/ps-end.txt b/docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/ps-end.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/ps-end.txt rename to docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/ps-end.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/refused/output/result.json b/docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/refused/output/result.json similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/refused/output/result.json rename to docs/archive/notes/p12/device/trial-a4a940db/6-negative-serverowned-vs-offscreen/refused/output/result.json diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/check.log b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/check.log similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/check.log rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/check.log diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-after-activity.txt b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-after-activity.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-after-activity.txt rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-after-activity.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-after-service.txt b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-after-service.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-after-service.txt rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-after-service.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-before.txt b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-before.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/ps-before.txt rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/ps-before.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/tds-activity.txt b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/tds-activity.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/tds-activity.txt rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/tds-activity.txt diff --git a/docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/tds-service2.txt b/docs/archive/notes/p12/device/trial-a4a940db/7-one-server/tds-service2.txt similarity index 100% rename from docs/Disaggregated/notes/p12/device/trial-a4a940db/7-one-server/tds-service2.txt rename to docs/archive/notes/p12/device/trial-a4a940db/7-one-server/tds-service2.txt diff --git a/docs/Disaggregated/notes/p12/fix-icd.sh b/docs/archive/notes/p12/fix-icd.sh similarity index 100% rename from docs/Disaggregated/notes/p12/fix-icd.sh rename to docs/archive/notes/p12/fix-icd.sh diff --git a/docs/Disaggregated/notes/p12/g1-base-names.sh b/docs/archive/notes/p12/g1-base-names.sh similarity index 100% rename from docs/Disaggregated/notes/p12/g1-base-names.sh rename to docs/archive/notes/p12/g1-base-names.sh diff --git a/docs/Disaggregated/notes/p12/gate-container.sh b/docs/archive/notes/p12/gate-container.sh similarity index 100% rename from docs/Disaggregated/notes/p12/gate-container.sh rename to docs/archive/notes/p12/gate-container.sh diff --git a/docs/Disaggregated/notes/p12/gate.sh b/docs/archive/notes/p12/gate.sh similarity index 100% rename from docs/Disaggregated/notes/p12/gate.sh rename to docs/archive/notes/p12/gate.sh diff --git a/docs/Disaggregated/notes/p12/gate/build-29b7b284.log b/docs/archive/notes/p12/gate/build-29b7b284.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/build-29b7b284.log rename to docs/archive/notes/p12/gate/build-29b7b284.log diff --git a/docs/Disaggregated/notes/p12/gate/build-984db455.log b/docs/archive/notes/p12/gate/build-984db455.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/build-984db455.log rename to docs/archive/notes/p12/gate/build-984db455.log diff --git a/docs/Disaggregated/notes/p12/gate/build-a4a940db.log b/docs/archive/notes/p12/gate/build-a4a940db.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/build-a4a940db.log rename to docs/archive/notes/p12/gate/build-a4a940db.log diff --git a/docs/Disaggregated/notes/p12/gate/gate-android1.log b/docs/archive/notes/p12/gate/gate-android1.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/gate-android1.log rename to docs/archive/notes/p12/gate/gate-android1.log diff --git a/docs/Disaggregated/notes/p12/gate/gate-review-3c342c97.log b/docs/archive/notes/p12/gate/gate-review-3c342c97.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/gate-review-3c342c97.log rename to docs/archive/notes/p12/gate/gate-review-3c342c97.log diff --git a/docs/Disaggregated/notes/p12/gate/gate-review-d04ac7d1-cmake4.log b/docs/archive/notes/p12/gate/gate-review-d04ac7d1-cmake4.log similarity index 100% rename from docs/Disaggregated/notes/p12/gate/gate-review-d04ac7d1-cmake4.log rename to docs/archive/notes/p12/gate/gate-review-d04ac7d1-cmake4.log diff --git a/docs/Disaggregated/notes/p12/map-apk-process.md b/docs/archive/notes/p12/map-apk-process.md similarity index 100% rename from docs/Disaggregated/notes/p12/map-apk-process.md rename to docs/archive/notes/p12/map-apk-process.md diff --git a/docs/Disaggregated/notes/p12/map-client-surface.md b/docs/archive/notes/p12/map-client-surface.md similarity index 100% rename from docs/Disaggregated/notes/p12/map-client-surface.md rename to docs/archive/notes/p12/map-client-surface.md diff --git a/docs/Disaggregated/notes/p12/map-docs-contract.md b/docs/archive/notes/p12/map-docs-contract.md similarity index 100% rename from docs/Disaggregated/notes/p12/map-docs-contract.md rename to docs/archive/notes/p12/map-docs-contract.md diff --git a/docs/Disaggregated/notes/p12/map-server-surface.md b/docs/archive/notes/p12/map-server-surface.md similarity index 100% rename from docs/Disaggregated/notes/p12/map-server-surface.md rename to docs/archive/notes/p12/map-server-surface.md diff --git a/docs/Disaggregated/notes/p12/p203.sh b/docs/archive/notes/p12/p203.sh similarity index 100% rename from docs/Disaggregated/notes/p12/p203.sh rename to docs/archive/notes/p12/p203.sh diff --git a/docs/Disaggregated/notes/p12/setup-tree.sh b/docs/archive/notes/p12/setup-tree.sh similarity index 100% rename from docs/Disaggregated/notes/p12/setup-tree.sh rename to docs/archive/notes/p12/setup-tree.sh diff --git a/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md b/docs/archive/notes/p13/HANDOFF-2026-10-06.md similarity index 100% rename from docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md rename to docs/archive/notes/p13/HANDOFF-2026-10-06.md diff --git a/docs/Disaggregated/notes/p13/INTEGRATOR-DECISIONS-P13.md b/docs/archive/notes/p13/INTEGRATOR-DECISIONS-P13.md similarity index 100% rename from docs/Disaggregated/notes/p13/INTEGRATOR-DECISIONS-P13.md rename to docs/archive/notes/p13/INTEGRATOR-DECISIONS-P13.md diff --git a/docs/Disaggregated/notes/p13/PLAN-P13.md b/docs/archive/notes/p13/PLAN-P13.md similarity index 99% rename from docs/Disaggregated/notes/p13/PLAN-P13.md rename to docs/archive/notes/p13/PLAN-P13.md index d8cc2b3e..b2d76890 100644 --- a/docs/Disaggregated/notes/p13/PLAN-P13.md +++ b/docs/archive/notes/p13/PLAN-P13.md @@ -1,6 +1,6 @@ # P13 计划:退役 pull 路径,monolith 换到记录臂 -> 2026-10-06,只读核查(树 `p13` = `origin/feat/disaggregated` `aee0632a`)。范围与出口门见 [`README.md`](README.md);P8 留下的缺陷见 [`../DEBTS.md`](../DEBTS.md) ID-P8-13 / ID-P8-14 两行与 [`B`](../p8/B.md)、[`C`](../p8/C.md)、[`D`](../p8/D.md)、[`E`](../p8/E.md)、[`SV`](../p8/SV.md)。本页只写计划,代码一行未动;实施等集成方点头。行号是本树当日的,实施时以符号为准。 +> 2026-10-06,只读核查(树 `p13` = `origin/feat/disaggregated` `aee0632a`)。范围与出口门见 [`README.md`](README.md);P8 留下的缺陷见 [`../DEBTS.md`](../../../Disaggregated/DEBTS.md) ID-P8-13 / ID-P8-14 两行与 [`B`](../p8/B.md)、[`C`](../p8/C.md)、[`D`](../p8/D.md)、[`E`](../p8/E.md)、[`SV`](../p8/SV.md)。本页只写计划,代码一行未动;实施等集成方点头。行号是本树当日的,实施时以符号为准。 ## 0. 结论 diff --git a/docs/Disaggregated/notes/p13/README.md b/docs/archive/notes/p13/README.md similarity index 99% rename from docs/Disaggregated/notes/p13/README.md rename to docs/archive/notes/p13/README.md index f9e34c78..e0bff7e2 100644 --- a/docs/Disaggregated/notes/p13/README.md +++ b/docs/archive/notes/p13/README.md @@ -1,6 +1,6 @@ # P13 — 退役 pull 路径(已收官 2026-10-07) -> 计划 [`PLAN-P13.md`](PLAN-P13.md),裁定 [`INTEGRATOR-DECISIONS-P13.md`](INTEGRATOR-DECISIONS-P13.md),CI 清理记录 [`docs/ci/ci-cleanup-log.md`](../../../ci/ci-cleanup-log.md)。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。 +> 计划 [`PLAN-P13.md`](PLAN-P13.md),裁定 [`INTEGRATOR-DECISIONS-P13.md`](INTEGRATOR-DECISIONS-P13.md),CI 清理记录 [`docs/ci/ci-cleanup-log.md`](../../../ci/ci-cleanup-log.md)。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。 ## 进度 diff --git a/docs/Disaggregated/notes/p13/W5-DESIGN.md b/docs/archive/notes/p13/W5-DESIGN.md similarity index 100% rename from docs/Disaggregated/notes/p13/W5-DESIGN.md rename to docs/archive/notes/p13/W5-DESIGN.md diff --git a/docs/Disaggregated/notes/p13/W5-INVENTORY.csv b/docs/archive/notes/p13/W5-INVENTORY.csv similarity index 100% rename from docs/Disaggregated/notes/p13/W5-INVENTORY.csv rename to docs/archive/notes/p13/W5-INVENTORY.csv diff --git a/docs/Disaggregated/notes/p13/fcl-soak/README.md b/docs/archive/notes/p13/fcl-soak/README.md similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/README.md rename to docs/archive/notes/p13/fcl-soak/README.md diff --git a/docs/Disaggregated/notes/p13/fcl-soak/run004-magma-ftrace-signal34.txt b/docs/archive/notes/p13/fcl-soak/run004-magma-ftrace-signal34.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/run004-magma-ftrace-signal34.txt rename to docs/archive/notes/p13/fcl-soak/run004-magma-ftrace-signal34.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/run004-magma-logcat-excerpt.txt b/docs/archive/notes/p13/fcl-soak/run004-magma-logcat-excerpt.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/run004-magma-logcat-excerpt.txt rename to docs/archive/notes/p13/fcl-soak/run004-magma-logcat-excerpt.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/run004-magma-sigcgt-transitions.txt b/docs/archive/notes/p13/fcl-soak/run004-magma-sigcgt-transitions.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/run004-magma-sigcgt-transitions.txt rename to docs/archive/notes/p13/fcl-soak/run004-magma-sigcgt-transitions.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/soak-ab-p12-p13-summary.txt b/docs/archive/notes/p13/fcl-soak/soak-ab-p12-p13-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/soak-ab-p12-p13-summary.txt rename to docs/archive/notes/p13/fcl-soak/soak-ab-p12-p13-summary.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/soak-p12-control-summary.txt b/docs/archive/notes/p13/fcl-soak/soak-p12-control-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/soak-p12-control-summary.txt rename to docs/archive/notes/p13/fcl-soak/soak-p12-control-summary.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/soak-p13-clean-summary.txt b/docs/archive/notes/p13/fcl-soak/soak-p13-clean-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/soak-p13-clean-summary.txt rename to docs/archive/notes/p13/fcl-soak/soak-p13-clean-summary.txt diff --git a/docs/Disaggregated/notes/p13/fcl-soak/soak2.sh b/docs/archive/notes/p13/fcl-soak/soak2.sh similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/soak2.sh rename to docs/archive/notes/p13/fcl-soak/soak2.sh diff --git a/docs/Disaggregated/notes/p13/fcl-soak/soak3.sh b/docs/archive/notes/p13/fcl-soak/soak3.sh similarity index 100% rename from docs/Disaggregated/notes/p13/fcl-soak/soak3.sh rename to docs/archive/notes/p13/fcl-soak/soak3.sh diff --git a/docs/Disaggregated/notes/p13/tools/s3-ops-1.txt b/docs/archive/notes/p13/tools/s3-ops-1.txt similarity index 100% rename from docs/Disaggregated/notes/p13/tools/s3-ops-1.txt rename to docs/archive/notes/p13/tools/s3-ops-1.txt diff --git a/docs/Disaggregated/notes/p13/tools/s3-ops-2.txt b/docs/archive/notes/p13/tools/s3-ops-2.txt similarity index 100% rename from docs/Disaggregated/notes/p13/tools/s3-ops-2.txt rename to docs/archive/notes/p13/tools/s3-ops-2.txt diff --git a/docs/Disaggregated/notes/p13/tools/s3-ops-3.txt b/docs/archive/notes/p13/tools/s3-ops-3.txt similarity index 100% rename from docs/Disaggregated/notes/p13/tools/s3-ops-3.txt rename to docs/archive/notes/p13/tools/s3-ops-3.txt diff --git a/docs/Disaggregated/notes/p13/tools/w5_classify.py b/docs/archive/notes/p13/tools/w5_classify.py similarity index 100% rename from docs/Disaggregated/notes/p13/tools/w5_classify.py rename to docs/archive/notes/p13/tools/w5_classify.py diff --git a/docs/Disaggregated/notes/p13/tools/w5_regate.py b/docs/archive/notes/p13/tools/w5_regate.py similarity index 100% rename from docs/Disaggregated/notes/p13/tools/w5_regate.py rename to docs/archive/notes/p13/tools/w5_regate.py diff --git a/docs/Disaggregated/notes/p13/tools/w5_rewrite.py b/docs/archive/notes/p13/tools/w5_rewrite.py similarity index 100% rename from docs/Disaggregated/notes/p13/tools/w5_rewrite.py rename to docs/archive/notes/p13/tools/w5_rewrite.py diff --git a/docs/Disaggregated/notes/p2/BRIEF-P2.md b/docs/archive/notes/p2/BRIEF-P2.md similarity index 100% rename from docs/Disaggregated/notes/p2/BRIEF-P2.md rename to docs/archive/notes/p2/BRIEF-P2.md diff --git a/docs/Disaggregated/notes/p2/INTEGRATOR-DECISIONS.md b/docs/archive/notes/p2/INTEGRATOR-DECISIONS.md similarity index 100% rename from docs/Disaggregated/notes/p2/INTEGRATOR-DECISIONS.md rename to docs/archive/notes/p2/INTEGRATOR-DECISIONS.md diff --git a/docs/Disaggregated/notes/p2/README.md b/docs/archive/notes/p2/README.md similarity index 95% rename from docs/Disaggregated/notes/p2/README.md rename to docs/archive/notes/p2/README.md index 0c123745..f94b4b5a 100644 --- a/docs/Disaggregated/notes/p2/README.md +++ b/docs/archive/notes/p2/README.md @@ -1,6 +1,6 @@ # P2 — 渲染状态 CSO + 第一片 Track H + 残余值块(`738b289d`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p2/ab/ab-summary-final.md b/docs/archive/notes/p2/ab/ab-summary-final.md similarity index 100% rename from docs/Disaggregated/notes/p2/ab/ab-summary-final.md rename to docs/archive/notes/p2/ab/ab-summary-final.md diff --git a/docs/Disaggregated/notes/p2/ab/ab-summary-interim.md b/docs/archive/notes/p2/ab/ab-summary-interim.md similarity index 100% rename from docs/Disaggregated/notes/p2/ab/ab-summary-interim.md rename to docs/archive/notes/p2/ab/ab-summary-interim.md diff --git a/docs/Disaggregated/notes/p2/ab/ab-summary-xiaomi.md b/docs/archive/notes/p2/ab/ab-summary-xiaomi.md similarity index 100% rename from docs/Disaggregated/notes/p2/ab/ab-summary-xiaomi.md rename to docs/archive/notes/p2/ab/ab-summary-xiaomi.md diff --git a/docs/Disaggregated/notes/p2/ab/ab-summary.md b/docs/archive/notes/p2/ab/ab-summary.md similarity index 100% rename from docs/Disaggregated/notes/p2/ab/ab-summary.md rename to docs/archive/notes/p2/ab/ab-summary.md diff --git a/docs/Disaggregated/notes/p2/bench/driverbench.md b/docs/archive/notes/p2/bench/driverbench.md similarity index 100% rename from docs/Disaggregated/notes/p2/bench/driverbench.md rename to docs/archive/notes/p2/bench/driverbench.md diff --git a/docs/Disaggregated/notes/p2/devices/REPORT.md b/docs/archive/notes/p2/devices/REPORT.md similarity index 100% rename from docs/Disaggregated/notes/p2/devices/REPORT.md rename to docs/archive/notes/p2/devices/REPORT.md diff --git a/docs/Disaggregated/notes/p2/p2-results/contract.md b/docs/archive/notes/p2/p2-results/contract.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/contract.md rename to docs/archive/notes/p2/p2-results/contract.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-review-v1.md b/docs/archive/notes/p2/p2-results/espryt-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-review-v1.md rename to docs/archive/notes/p2/p2-results/espryt-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-review-v2.md b/docs/archive/notes/p2/p2-results/espryt-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-review-v2.md rename to docs/archive/notes/p2/p2-results/espryt-review-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-review-v3.md b/docs/archive/notes/p2/p2-results/espryt-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-review-v3.md rename to docs/archive/notes/p2/p2-results/espryt-review-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-review-v4.md b/docs/archive/notes/p2/p2-results/espryt-review-v4.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-review-v4.md rename to docs/archive/notes/p2/p2-results/espryt-review-v4.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-review-v5.md b/docs/archive/notes/p2/p2-results/espryt-review-v5.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-review-v5.md rename to docs/archive/notes/p2/p2-results/espryt-review-v5.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-v1.md b/docs/archive/notes/p2/p2-results/espryt-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-v1.md rename to docs/archive/notes/p2/p2-results/espryt-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-v2.md b/docs/archive/notes/p2/p2-results/espryt-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-v2.md rename to docs/archive/notes/p2/p2-results/espryt-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-v3.md b/docs/archive/notes/p2/p2-results/espryt-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-v3.md rename to docs/archive/notes/p2/p2-results/espryt-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-v4.md b/docs/archive/notes/p2/p2-results/espryt-v4.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-v4.md rename to docs/archive/notes/p2/p2-results/espryt-v4.md diff --git a/docs/Disaggregated/notes/p2/p2-results/espryt-v5.md b/docs/archive/notes/p2/p2-results/espryt-v5.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/espryt-v5.md rename to docs/archive/notes/p2/p2-results/espryt-v5.md diff --git a/docs/Disaggregated/notes/p2/p2-results/fix-aba-review-v1.md b/docs/archive/notes/p2/p2-results/fix-aba-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/fix-aba-review-v1.md rename to docs/archive/notes/p2/p2-results/fix-aba-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/fix-aba-v1.md b/docs/archive/notes/p2/p2-results/fix-aba-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/fix-aba-v1.md rename to docs/archive/notes/p2/p2-results/fix-aba-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/fix-aba-v2.md b/docs/archive/notes/p2/p2-results/fix-aba-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/fix-aba-v2.md rename to docs/archive/notes/p2/p2-results/fix-aba-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-review-v1.md b/docs/archive/notes/p2/p2-results/gates-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-review-v1.md rename to docs/archive/notes/p2/p2-results/gates-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-review-v2.md b/docs/archive/notes/p2/p2-results/gates-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-review-v2.md rename to docs/archive/notes/p2/p2-results/gates-review-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-review-v3.md b/docs/archive/notes/p2/p2-results/gates-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-review-v3.md rename to docs/archive/notes/p2/p2-results/gates-review-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-v1.md b/docs/archive/notes/p2/p2-results/gates-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-v1.md rename to docs/archive/notes/p2/p2-results/gates-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-v2.md b/docs/archive/notes/p2/p2-results/gates-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-v2.md rename to docs/archive/notes/p2/p2-results/gates-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/gates-v3.md b/docs/archive/notes/p2/p2-results/gates-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/gates-v3.md rename to docs/archive/notes/p2/p2-results/gates-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-review-v1.md b/docs/archive/notes/p2/p2-results/magma-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-review-v1.md rename to docs/archive/notes/p2/p2-results/magma-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-review-v2.md b/docs/archive/notes/p2/p2-results/magma-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-review-v2.md rename to docs/archive/notes/p2/p2-results/magma-review-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-review-v3.md b/docs/archive/notes/p2/p2-results/magma-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-review-v3.md rename to docs/archive/notes/p2/p2-results/magma-review-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-v1.md b/docs/archive/notes/p2/p2-results/magma-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-v1.md rename to docs/archive/notes/p2/p2-results/magma-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-v2.md b/docs/archive/notes/p2/p2-results/magma-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-v2.md rename to docs/archive/notes/p2/p2-results/magma-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/magma-v3.md b/docs/archive/notes/p2/p2-results/magma-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/magma-v3.md rename to docs/archive/notes/p2/p2-results/magma-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-review-v1.md b/docs/archive/notes/p2/p2-results/spans-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-review-v1.md rename to docs/archive/notes/p2/p2-results/spans-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-review-v2.md b/docs/archive/notes/p2/p2-results/spans-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-review-v2.md rename to docs/archive/notes/p2/p2-results/spans-review-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-review-v3.md b/docs/archive/notes/p2/p2-results/spans-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-review-v3.md rename to docs/archive/notes/p2/p2-results/spans-review-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-v1.md b/docs/archive/notes/p2/p2-results/spans-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-v1.md rename to docs/archive/notes/p2/p2-results/spans-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-v2.md b/docs/archive/notes/p2/p2-results/spans-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-v2.md rename to docs/archive/notes/p2/p2-results/spans-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/spans-v3.md b/docs/archive/notes/p2/p2-results/spans-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/spans-v3.md rename to docs/archive/notes/p2/p2-results/spans-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-review-v1.md b/docs/archive/notes/p2/p2-results/tracker-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-review-v1.md rename to docs/archive/notes/p2/p2-results/tracker-review-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-review-v2.md b/docs/archive/notes/p2/p2-results/tracker-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-review-v2.md rename to docs/archive/notes/p2/p2-results/tracker-review-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-review-v3.md b/docs/archive/notes/p2/p2-results/tracker-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-review-v3.md rename to docs/archive/notes/p2/p2-results/tracker-review-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-review-v4.md b/docs/archive/notes/p2/p2-results/tracker-review-v4.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-review-v4.md rename to docs/archive/notes/p2/p2-results/tracker-review-v4.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-review-v5.md b/docs/archive/notes/p2/p2-results/tracker-review-v5.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-review-v5.md rename to docs/archive/notes/p2/p2-results/tracker-review-v5.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-v1.md b/docs/archive/notes/p2/p2-results/tracker-v1.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-v1.md rename to docs/archive/notes/p2/p2-results/tracker-v1.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-v2.md b/docs/archive/notes/p2/p2-results/tracker-v2.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-v2.md rename to docs/archive/notes/p2/p2-results/tracker-v2.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-v3.md b/docs/archive/notes/p2/p2-results/tracker-v3.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-v3.md rename to docs/archive/notes/p2/p2-results/tracker-v3.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-v4.md b/docs/archive/notes/p2/p2-results/tracker-v4.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-v4.md rename to docs/archive/notes/p2/p2-results/tracker-v4.md diff --git a/docs/Disaggregated/notes/p2/p2-results/tracker-v5.md b/docs/archive/notes/p2/p2-results/tracker-v5.md similarity index 100% rename from docs/Disaggregated/notes/p2/p2-results/tracker-v5.md rename to docs/archive/notes/p2/p2-results/tracker-v5.md diff --git a/docs/Disaggregated/notes/p2/scout-docs-spec.md b/docs/archive/notes/p2/scout-docs-spec.md similarity index 100% rename from docs/Disaggregated/notes/p2/scout-docs-spec.md rename to docs/archive/notes/p2/scout-docs-spec.md diff --git a/docs/Disaggregated/notes/p2/scout-measure-infra.md b/docs/archive/notes/p2/scout-measure-infra.md similarity index 100% rename from docs/Disaggregated/notes/p2/scout-measure-infra.md rename to docs/archive/notes/p2/scout-measure-infra.md diff --git a/docs/Disaggregated/notes/p2/scout-render-state.md b/docs/archive/notes/p2/scout-render-state.md similarity index 100% rename from docs/Disaggregated/notes/p2/scout-render-state.md rename to docs/archive/notes/p2/scout-render-state.md diff --git a/docs/Disaggregated/notes/p2/scout-track-h.md b/docs/archive/notes/p2/scout-track-h.md similarity index 100% rename from docs/Disaggregated/notes/p2/scout-track-h.md rename to docs/archive/notes/p2/scout-track-h.md diff --git a/docs/Disaggregated/notes/p2/scout-tracker.md b/docs/archive/notes/p2/scout-tracker.md similarity index 100% rename from docs/Disaggregated/notes/p2/scout-tracker.md rename to docs/archive/notes/p2/scout-tracker.md diff --git a/docs/Disaggregated/notes/p34b/README.md b/docs/archive/notes/p34b/README.md similarity index 95% rename from docs/Disaggregated/notes/p34b/README.md rename to docs/archive/notes/p34b/README.md index 7e19d86c..c3d4ba55 100644 --- a/docs/Disaggregated/notes/p34b/README.md +++ b/docs/archive/notes/p34b/README.md @@ -1,6 +1,6 @@ # P3b / P4b — Espryt 深化(P7 的并行流 wave 2-D) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 @@ -11,7 +11,7 @@ ## 阶段表行(原 `ROADMAP.md`) - **阶段**:**P3b / P4b** 深化(Espryt) -- **状态**:**已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.2)**;Espryt 项与 P7 文件零重叠,作为 P7 的并行流(wave 2-D)推进。**D1 / D2 / D3 已落地(`origin@22761a69`,2026-09-22)**:D1 = XFB 两洞(孤儿目标保留 varyings、回写事件切片)+ 回调 10→9 + 四个 resolver 具名启动期 stop + readback 家族三臂(+39/臂,readback 半边其实早已关,ID-P7-24);D2 + 返工 = `TextureViewAliasScenario`、`TextureUploadShape` 成门(散点内缩后零补丁 red-once)、`espryt_memo_purity.py`、`SubsystemDeps.def`(R-5)、12 场景 split 普查(+76/臂)(ID-P7-26/29);D3 = view 在 owner 上传后陈旧的产品缺陷修复(clean gate 读 storage record,三臂 3 红→14/14)+ D-K2 六处读者读同一张表(ID-P7-28/30)。**余**:R-3 另一半(`MGPSamplerView::Target` 谓词)、`KHR-GL46.texture_view.coherency` 的 split 读数、CTS AFTER(wave 4);~~Iris trace 普查结果(wave 3)~~ 已有头上结果(`3c80cd62`,[`notes/p7/iris-census-1135c664.md`](../p7/iris-census-1135c664.md));逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../CURRENT_STAGE_PROGRESS.md) +- **状态**:**已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.2)**;Espryt 项与 P7 文件零重叠,作为 P7 的并行流(wave 2-D)推进。**D1 / D2 / D3 已落地(`origin@22761a69`,2026-09-22)**:D1 = XFB 两洞(孤儿目标保留 varyings、回写事件切片)+ 回调 10→9 + 四个 resolver 具名启动期 stop + readback 家族三臂(+39/臂,readback 半边其实早已关,ID-P7-24);D2 + 返工 = `TextureViewAliasScenario`、`TextureUploadShape` 成门(散点内缩后零补丁 red-once)、`espryt_memo_purity.py`、`SubsystemDeps.def`(R-5)、12 场景 split 普查(+76/臂)(ID-P7-26/29);D3 = view 在 owner 上传后陈旧的产品缺陷修复(clean gate 读 storage record,三臂 3 红→14/14)+ D-K2 六处读者读同一张表(ID-P7-28/30)。**余**:R-3 另一半(`MGPSamplerView::Target` 谓词)、`KHR-GL46.texture_view.coherency` 的 split 读数、CTS AFTER(wave 4);~~Iris trace 普查结果(wave 3)~~ 已有头上结果(`3c80cd62`,[`notes/p7/iris-census-1135c664.md`](../p7/iris-census-1135c664.md));逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md) - **落地什么 / 范围**:view/属主发射游标**别名场景**(代码半已由 P4a `TextureEmit.h` 属主键控游标 + `TextureObjectView::ToOwner*` + P5e tx2 落地,欠验证);`g_fboTextureSyncList`(分离安全——记录臂先返回、退路是具名 Fatal;四个 resolver 改启动期具名 stop,文本删除受 P5e 裁定 1 约束归 P13);memo 重键**已落地**(P4a/P5f),补纯度 grep 门;~~XFB scatter 搬到 client~~(P5c/P5f 以 server staged shadow + `OnBufferWriteback` 落地;剩两处真洞:孤儿捕获目标被静默丢弃、回写事件无界——>128 KiB 即 `Fatal{EventRingOverflow}`);删 fragColor 重推导 workaround 与 `g_broadcastMemo*`(动 pull `.text`,归 P13,只改注释);raw-depth-fetch sampler 的 monolith 清理(可选);**回读收口**(pack 半已关:`set_pixel_pack_state` APPLIER_DERIVED + server 中性读 + client 侧 PACK-PBO 散射;readback 半开:`get-tex-image-shadow` / `copy-image-shadow-mirror` 非 monolith 下仍 abort、split 零覆盖);P4a 的 R-5(D-K2 规则合一处)/ R-11 必须,R-3 / R-4 / R-7 / R-10 可选;~~`ProgramArtifacts.h` 的 NDK 尺寸钉~~(P6.5 portable archive v2 + 布局指纹取代);链接实验分给它的 **14 个符号**(D12,棘轮落地后 Tier 1) - **验收门 / 证据**:纹理 / program 场景(split 三臂零覆盖,先普查首阻塞再注册);CTS `texture_*` / `shader_image_*` / `packed_pixels` + P4a 欠的 `direct_state_access.framebuffers*` 在 0.5 pp 内(caselist 入库 + monolith 基线 + delta 工具,今天三者皆无);每一个 Iris trace(CI 管道 P6 已建;**`3c80cd62` 主机结果**:39 例 × 双后端 × {monolith, inproc, spawn} 231 次全活,split 与 monolith 逐字节相同 70 / 77 行,7 行分歧均过阈值、无 Fatal;`texture-remint-pull` 未到达,**P9 例外表为空**——[`notes/p7/iris-census-1135c664.md`](../p7/iris-census-1135c664.md) §3–§4);`TextureUploadShapeScenario` 升级成门(Mali 增量无设备,按 Adreno 记录) diff --git a/docs/Disaggregated/notes/p34b/espryt-d1.md b/docs/archive/notes/p34b/espryt-d1.md similarity index 100% rename from docs/Disaggregated/notes/p34b/espryt-d1.md rename to docs/archive/notes/p34b/espryt-d1.md diff --git a/docs/Disaggregated/notes/p34b/espryt-d2.md b/docs/archive/notes/p34b/espryt-d2.md similarity index 100% rename from docs/Disaggregated/notes/p34b/espryt-d2.md rename to docs/archive/notes/p34b/espryt-d2.md diff --git a/docs/Disaggregated/notes/p34b/espryt-d3.md b/docs/archive/notes/p34b/espryt-d3.md similarity index 100% rename from docs/Disaggregated/notes/p34b/espryt-d3.md rename to docs/archive/notes/p34b/espryt-d3.md diff --git a/docs/Disaggregated/notes/p34b/split-scenario-census.md b/docs/archive/notes/p34b/split-scenario-census.md similarity index 100% rename from docs/Disaggregated/notes/p34b/split-scenario-census.md rename to docs/archive/notes/p34b/split-scenario-census.md diff --git a/docs/Disaggregated/notes/p3a/BRIEF-P3A.md b/docs/archive/notes/p3a/BRIEF-P3A.md similarity index 100% rename from docs/Disaggregated/notes/p3a/BRIEF-P3A.md rename to docs/archive/notes/p3a/BRIEF-P3A.md diff --git a/docs/Disaggregated/notes/p3a/INTEGRATOR-DECISIONS.md b/docs/archive/notes/p3a/INTEGRATOR-DECISIONS.md similarity index 100% rename from docs/Disaggregated/notes/p3a/INTEGRATOR-DECISIONS.md rename to docs/archive/notes/p3a/INTEGRATOR-DECISIONS.md diff --git a/docs/Disaggregated/notes/p3a/README.md b/docs/archive/notes/p3a/README.md similarity index 97% rename from docs/Disaggregated/notes/p3a/README.md rename to docs/archive/notes/p3a/README.md index 29eefa61..b64339fe 100644 --- a/docs/Disaggregated/notes/p3a/README.md +++ b/docs/archive/notes/p3a/README.md @@ -1,6 +1,6 @@ # P3a — handle wave 1(Espryt):buffer、VAO(`fde5fda3`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p3a/ab/ab-summary-oppo.md b/docs/archive/notes/p3a/ab/ab-summary-oppo.md similarity index 100% rename from docs/Disaggregated/notes/p3a/ab/ab-summary-oppo.md rename to docs/archive/notes/p3a/ab/ab-summary-oppo.md diff --git a/docs/Disaggregated/notes/p3a/ab/ab3-final.md b/docs/archive/notes/p3a/ab/ab3-final.md similarity index 100% rename from docs/Disaggregated/notes/p3a/ab/ab3-final.md rename to docs/archive/notes/p3a/ab/ab3-final.md diff --git a/docs/Disaggregated/notes/p3a/ab/ab3-interim.md b/docs/archive/notes/p3a/ab/ab3-interim.md similarity index 100% rename from docs/Disaggregated/notes/p3a/ab/ab3-interim.md rename to docs/archive/notes/p3a/ab/ab3-interim.md diff --git a/docs/Disaggregated/notes/p3a/bench/driverbench.md b/docs/archive/notes/p3a/bench/driverbench.md similarity index 100% rename from docs/Disaggregated/notes/p3a/bench/driverbench.md rename to docs/archive/notes/p3a/bench/driverbench.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/asan-doublefree-v1.md b/docs/archive/notes/p3a/p3a-results/asan-doublefree-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/asan-doublefree-v1.md rename to docs/archive/notes/p3a/p3a-results/asan-doublefree-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/client-review-v1.md b/docs/archive/notes/p3a/p3a-results/client-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/client-review-v1.md rename to docs/archive/notes/p3a/p3a-results/client-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/client-v1.md b/docs/archive/notes/p3a/p3a-results/client-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/client-v1.md rename to docs/archive/notes/p3a/p3a-results/client-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/client-v2.md b/docs/archive/notes/p3a/p3a-results/client-v2.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/client-v2.md rename to docs/archive/notes/p3a/p3a-results/client-v2.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/contract-review-v1.md b/docs/archive/notes/p3a/p3a-results/contract-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/contract-review-v1.md rename to docs/archive/notes/p3a/p3a-results/contract-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/contract-v1.md b/docs/archive/notes/p3a/p3a-results/contract-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/contract-v1.md rename to docs/archive/notes/p3a/p3a-results/contract-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/espryt-review-v1.md b/docs/archive/notes/p3a/p3a-results/espryt-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/espryt-review-v1.md rename to docs/archive/notes/p3a/p3a-results/espryt-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/espryt-v1.md b/docs/archive/notes/p3a/p3a-results/espryt-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/espryt-v1.md rename to docs/archive/notes/p3a/p3a-results/espryt-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/espryt-v2.md b/docs/archive/notes/p3a/p3a-results/espryt-v2.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/espryt-v2.md rename to docs/archive/notes/p3a/p3a-results/espryt-v2.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/espryt-v3.md b/docs/archive/notes/p3a/p3a-results/espryt-v3.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/espryt-v3.md rename to docs/archive/notes/p3a/p3a-results/espryt-v3.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/exit-order-v1.md b/docs/archive/notes/p3a/p3a-results/exit-order-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/exit-order-v1.md rename to docs/archive/notes/p3a/p3a-results/exit-order-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/final-review-v1.md b/docs/archive/notes/p3a/p3a-results/final-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/final-review-v1.md rename to docs/archive/notes/p3a/p3a-results/final-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/final-v2.md b/docs/archive/notes/p3a/p3a-results/final-v2.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/final-v2.md rename to docs/archive/notes/p3a/p3a-results/final-v2.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/gates-review-v1.md b/docs/archive/notes/p3a/p3a-results/gates-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/gates-review-v1.md rename to docs/archive/notes/p3a/p3a-results/gates-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/gates-v1.md b/docs/archive/notes/p3a/p3a-results/gates-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/gates-v1.md rename to docs/archive/notes/p3a/p3a-results/gates-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/gates-v2.md b/docs/archive/notes/p3a/p3a-results/gates-v2.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/gates-v2.md rename to docs/archive/notes/p3a/p3a-results/gates-v2.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/wire-review-v1.md b/docs/archive/notes/p3a/p3a-results/wire-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/wire-review-v1.md rename to docs/archive/notes/p3a/p3a-results/wire-review-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/wire-v1.md b/docs/archive/notes/p3a/p3a-results/wire-v1.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/wire-v1.md rename to docs/archive/notes/p3a/p3a-results/wire-v1.md diff --git a/docs/Disaggregated/notes/p3a/p3a-results/wire-v2.md b/docs/archive/notes/p3a/p3a-results/wire-v2.md similarity index 100% rename from docs/Disaggregated/notes/p3a/p3a-results/wire-v2.md rename to docs/archive/notes/p3a/p3a-results/wire-v2.md diff --git a/docs/Disaggregated/notes/p3a/scout-docs-spec.md b/docs/archive/notes/p3a/scout-docs-spec.md similarity index 100% rename from docs/Disaggregated/notes/p3a/scout-docs-spec.md rename to docs/archive/notes/p3a/scout-docs-spec.md diff --git a/docs/Disaggregated/notes/p3a/scout-espryt-buffers.md b/docs/archive/notes/p3a/scout-espryt-buffers.md similarity index 100% rename from docs/Disaggregated/notes/p3a/scout-espryt-buffers.md rename to docs/archive/notes/p3a/scout-espryt-buffers.md diff --git a/docs/Disaggregated/notes/p3a/scout-espryt-vao.md b/docs/archive/notes/p3a/scout-espryt-vao.md similarity index 100% rename from docs/Disaggregated/notes/p3a/scout-espryt-vao.md rename to docs/archive/notes/p3a/scout-espryt-vao.md diff --git a/docs/Disaggregated/notes/p3a/scout-pipe-and-tests.md b/docs/archive/notes/p3a/scout-pipe-and-tests.md similarity index 100% rename from docs/Disaggregated/notes/p3a/scout-pipe-and-tests.md rename to docs/archive/notes/p3a/scout-pipe-and-tests.md diff --git a/docs/Disaggregated/notes/p4a/BRIEF-P4A.md b/docs/archive/notes/p4a/BRIEF-P4A.md similarity index 100% rename from docs/Disaggregated/notes/p4a/BRIEF-P4A.md rename to docs/archive/notes/p4a/BRIEF-P4A.md diff --git a/docs/Disaggregated/notes/p4a/INTEGRATOR-DECISIONS.md b/docs/archive/notes/p4a/INTEGRATOR-DECISIONS.md similarity index 100% rename from docs/Disaggregated/notes/p4a/INTEGRATOR-DECISIONS.md rename to docs/archive/notes/p4a/INTEGRATOR-DECISIONS.md diff --git a/docs/Disaggregated/notes/p4a/README.md b/docs/archive/notes/p4a/README.md similarity index 96% rename from docs/Disaggregated/notes/p4a/README.md rename to docs/archive/notes/p4a/README.md index 621f4873..3dd87b52 100644 --- a/docs/Disaggregated/notes/p4a/README.md +++ b/docs/archive/notes/p4a/README.md @@ -1,6 +1,6 @@ # P4a — handle wave 2(Espryt):FBO / 纹理 / sampler / program(`8c458cd5`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p4a/ab-redmi/three-arm.md b/docs/archive/notes/p4a/ab-redmi/three-arm.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab-redmi/three-arm.md rename to docs/archive/notes/p4a/ab-redmi/three-arm.md diff --git a/docs/Disaggregated/notes/p4a/ab-redmi/two-arm.md b/docs/archive/notes/p4a/ab-redmi/two-arm.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab-redmi/two-arm.md rename to docs/archive/notes/p4a/ab-redmi/two-arm.md diff --git a/docs/Disaggregated/notes/p4a/ab/main-two-arm.md b/docs/archive/notes/p4a/ab/main-two-arm.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab/main-two-arm.md rename to docs/archive/notes/p4a/ab/main-two-arm.md diff --git a/docs/Disaggregated/notes/p4a/ab/prefix-a38bdab4/three-arm-prefix.md b/docs/archive/notes/p4a/ab/prefix-a38bdab4/three-arm-prefix.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab/prefix-a38bdab4/three-arm-prefix.md rename to docs/archive/notes/p4a/ab/prefix-a38bdab4/three-arm-prefix.md diff --git a/docs/Disaggregated/notes/p4a/ab/prefix-a38bdab4/three-arm-xiaomi.md b/docs/archive/notes/p4a/ab/prefix-a38bdab4/three-arm-xiaomi.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab/prefix-a38bdab4/three-arm-xiaomi.md rename to docs/archive/notes/p4a/ab/prefix-a38bdab4/three-arm-xiaomi.md diff --git a/docs/Disaggregated/notes/p4a/ab/three-arm-prefix.md b/docs/archive/notes/p4a/ab/three-arm-prefix.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab/three-arm-prefix.md rename to docs/archive/notes/p4a/ab/three-arm-prefix.md diff --git a/docs/Disaggregated/notes/p4a/ab/three-arm.md b/docs/archive/notes/p4a/ab/three-arm.md similarity index 100% rename from docs/Disaggregated/notes/p4a/ab/three-arm.md rename to docs/archive/notes/p4a/ab/three-arm.md diff --git a/docs/Disaggregated/notes/p4a/bench/driverbench.md b/docs/archive/notes/p4a/bench/driverbench.md similarity index 100% rename from docs/Disaggregated/notes/p4a/bench/driverbench.md rename to docs/archive/notes/p4a/bench/driverbench.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientfb-review-v1.md b/docs/archive/notes/p4a/p4a-results/clientfb-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientfb-review-v1.md rename to docs/archive/notes/p4a/p4a-results/clientfb-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientfb-review-v2.md b/docs/archive/notes/p4a/p4a-results/clientfb-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientfb-review-v2.md rename to docs/archive/notes/p4a/p4a-results/clientfb-review-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientfb-v1.md b/docs/archive/notes/p4a/p4a-results/clientfb-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientfb-v1.md rename to docs/archive/notes/p4a/p4a-results/clientfb-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientfb-v2.md b/docs/archive/notes/p4a/p4a-results/clientfb-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientfb-v2.md rename to docs/archive/notes/p4a/p4a-results/clientfb-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientsp-review-v1.md b/docs/archive/notes/p4a/p4a-results/clientsp-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientsp-review-v1.md rename to docs/archive/notes/p4a/p4a-results/clientsp-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientsp-review-v2.md b/docs/archive/notes/p4a/p4a-results/clientsp-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientsp-review-v2.md rename to docs/archive/notes/p4a/p4a-results/clientsp-review-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientsp-v1.md b/docs/archive/notes/p4a/p4a-results/clientsp-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientsp-v1.md rename to docs/archive/notes/p4a/p4a-results/clientsp-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientsp-v2.md b/docs/archive/notes/p4a/p4a-results/clientsp-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientsp-v2.md rename to docs/archive/notes/p4a/p4a-results/clientsp-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/clientsp-v3.md b/docs/archive/notes/p4a/p4a-results/clientsp-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/clientsp-v3.md rename to docs/archive/notes/p4a/p4a-results/clientsp-v3.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-review-v1.md b/docs/archive/notes/p4a/p4a-results/contract-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-review-v1.md rename to docs/archive/notes/p4a/p4a-results/contract-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v1.md b/docs/archive/notes/p4a/p4a-results/contract-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v1.md rename to docs/archive/notes/p4a/p4a-results/contract-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v2.md b/docs/archive/notes/p4a/p4a-results/contract-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v2.md rename to docs/archive/notes/p4a/p4a-results/contract-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v3.md b/docs/archive/notes/p4a/p4a-results/contract-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v3.md rename to docs/archive/notes/p4a/p4a-results/contract-v3.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v4.md b/docs/archive/notes/p4a/p4a-results/contract-v4.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v4.md rename to docs/archive/notes/p4a/p4a-results/contract-v4.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v5.md b/docs/archive/notes/p4a/p4a-results/contract-v5.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v5.md rename to docs/archive/notes/p4a/p4a-results/contract-v5.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v6.md b/docs/archive/notes/p4a/p4a-results/contract-v6.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v6.md rename to docs/archive/notes/p4a/p4a-results/contract-v6.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/contract-v7.md b/docs/archive/notes/p4a/p4a-results/contract-v7.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/contract-v7.md rename to docs/archive/notes/p4a/p4a-results/contract-v7.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-review-v1.md b/docs/archive/notes/p4a/p4a-results/esprytdraw-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-review-v1.md rename to docs/archive/notes/p4a/p4a-results/esprytdraw-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v1.md b/docs/archive/notes/p4a/p4a-results/esprytdraw-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v1.md rename to docs/archive/notes/p4a/p4a-results/esprytdraw-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v2.md b/docs/archive/notes/p4a/p4a-results/esprytdraw-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v2.md rename to docs/archive/notes/p4a/p4a-results/esprytdraw-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v3.md b/docs/archive/notes/p4a/p4a-results/esprytdraw-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytdraw-v3.md rename to docs/archive/notes/p4a/p4a-results/esprytdraw-v3.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytobj-review-v1.md b/docs/archive/notes/p4a/p4a-results/esprytobj-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytobj-review-v1.md rename to docs/archive/notes/p4a/p4a-results/esprytobj-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytobj-review-v2.md b/docs/archive/notes/p4a/p4a-results/esprytobj-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytobj-review-v2.md rename to docs/archive/notes/p4a/p4a-results/esprytobj-review-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v1.md b/docs/archive/notes/p4a/p4a-results/esprytobj-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v1.md rename to docs/archive/notes/p4a/p4a-results/esprytobj-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v2.md b/docs/archive/notes/p4a/p4a-results/esprytobj-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v2.md rename to docs/archive/notes/p4a/p4a-results/esprytobj-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v3.md b/docs/archive/notes/p4a/p4a-results/esprytobj-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/esprytobj-v3.md rename to docs/archive/notes/p4a/p4a-results/esprytobj-v3.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/fable-seam-audit.md b/docs/archive/notes/p4a/p4a-results/fable-seam-audit.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/fable-seam-audit.md rename to docs/archive/notes/p4a/p4a-results/fable-seam-audit.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/fablefix-v1.md b/docs/archive/notes/p4a/p4a-results/fablefix-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/fablefix-v1.md rename to docs/archive/notes/p4a/p4a-results/fablefix-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/final-review-v1.md b/docs/archive/notes/p4a/p4a-results/final-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/final-review-v1.md rename to docs/archive/notes/p4a/p4a-results/final-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/finalfix-v1-logs/p4a-finalfix-gate-symbols.md b/docs/archive/notes/p4a/p4a-results/finalfix-v1-logs/p4a-finalfix-gate-symbols.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/finalfix-v1-logs/p4a-finalfix-gate-symbols.md rename to docs/archive/notes/p4a/p4a-results/finalfix-v1-logs/p4a-finalfix-gate-symbols.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/finalfix-v1.md b/docs/archive/notes/p4a/p4a-results/finalfix-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/finalfix-v1.md rename to docs/archive/notes/p4a/p4a-results/finalfix-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/gates-review-v1.md b/docs/archive/notes/p4a/p4a-results/gates-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/gates-review-v1.md rename to docs/archive/notes/p4a/p4a-results/gates-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/gates-review-v2.md b/docs/archive/notes/p4a/p4a-results/gates-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/gates-review-v2.md rename to docs/archive/notes/p4a/p4a-results/gates-review-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/gates-v1.md b/docs/archive/notes/p4a/p4a-results/gates-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/gates-v1.md rename to docs/archive/notes/p4a/p4a-results/gates-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/gates-v2.md b/docs/archive/notes/p4a/p4a-results/gates-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/gates-v2.md rename to docs/archive/notes/p4a/p4a-results/gates-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/gates-v3.md b/docs/archive/notes/p4a/p4a-results/gates-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/gates-v3.md rename to docs/archive/notes/p4a/p4a-results/gates-v3.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/wire-review-v1.md b/docs/archive/notes/p4a/p4a-results/wire-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/wire-review-v1.md rename to docs/archive/notes/p4a/p4a-results/wire-review-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/wire-review-v2.md b/docs/archive/notes/p4a/p4a-results/wire-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/wire-review-v2.md rename to docs/archive/notes/p4a/p4a-results/wire-review-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/wire-v1.md b/docs/archive/notes/p4a/p4a-results/wire-v1.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/wire-v1.md rename to docs/archive/notes/p4a/p4a-results/wire-v1.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/wire-v2.md b/docs/archive/notes/p4a/p4a-results/wire-v2.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/wire-v2.md rename to docs/archive/notes/p4a/p4a-results/wire-v2.md diff --git a/docs/Disaggregated/notes/p4a/p4a-results/wire-v3.md b/docs/archive/notes/p4a/p4a-results/wire-v3.md similarity index 100% rename from docs/Disaggregated/notes/p4a/p4a-results/wire-v3.md rename to docs/archive/notes/p4a/p4a-results/wire-v3.md diff --git a/docs/Disaggregated/notes/p4a/scout-docs-spec.md b/docs/archive/notes/p4a/scout-docs-spec.md similarity index 100% rename from docs/Disaggregated/notes/p4a/scout-docs-spec.md rename to docs/archive/notes/p4a/scout-docs-spec.md diff --git a/docs/Disaggregated/notes/p4a/scout-espryt-framebuffer.md b/docs/archive/notes/p4a/scout-espryt-framebuffer.md similarity index 100% rename from docs/Disaggregated/notes/p4a/scout-espryt-framebuffer.md rename to docs/archive/notes/p4a/scout-espryt-framebuffer.md diff --git a/docs/Disaggregated/notes/p4a/scout-espryt-sampler-program.md b/docs/archive/notes/p4a/scout-espryt-sampler-program.md similarity index 100% rename from docs/Disaggregated/notes/p4a/scout-espryt-sampler-program.md rename to docs/archive/notes/p4a/scout-espryt-sampler-program.md diff --git a/docs/Disaggregated/notes/p4a/scout-frontend-state.md b/docs/archive/notes/p4a/scout-frontend-state.md similarity index 100% rename from docs/Disaggregated/notes/p4a/scout-frontend-state.md rename to docs/archive/notes/p4a/scout-frontend-state.md diff --git a/docs/Disaggregated/notes/p4a/scout-pipe-and-client.md b/docs/archive/notes/p4a/scout-pipe-and-client.md similarity index 100% rename from docs/Disaggregated/notes/p4a/scout-pipe-and-client.md rename to docs/archive/notes/p4a/scout-pipe-and-client.md diff --git a/docs/Disaggregated/notes/p5/BRIEF-P5.md b/docs/archive/notes/p5/BRIEF-P5.md similarity index 100% rename from docs/Disaggregated/notes/p5/BRIEF-P5.md rename to docs/archive/notes/p5/BRIEF-P5.md diff --git a/docs/Disaggregated/notes/p5/PACKAGE-PREAMBLE.md b/docs/archive/notes/p5/PACKAGE-PREAMBLE.md similarity index 100% rename from docs/Disaggregated/notes/p5/PACKAGE-PREAMBLE.md rename to docs/archive/notes/p5/PACKAGE-PREAMBLE.md diff --git a/docs/Disaggregated/notes/p5/README.md b/docs/archive/notes/p5/README.md similarity index 97% rename from docs/Disaggregated/notes/p5/README.md rename to docs/archive/notes/p5/README.md index e7b59c77..79683d06 100644 --- a/docs/Disaggregated/notes/p5/README.md +++ b/docs/archive/notes/p5/README.md @@ -1,6 +1,6 @@ # P5 — 传输 + inproc applier + 发射表(`ff2994d9..37fc4fdb`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5/p5-results/ab-v1-tables.md b/docs/archive/notes/p5/p5-results/ab-v1-tables.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/ab-v1-tables.md rename to docs/archive/notes/p5/p5-results/ab-v1-tables.md diff --git a/docs/Disaggregated/notes/p5/p5-results/ab-v1.md b/docs/archive/notes/p5/p5-results/ab-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/ab-v1.md rename to docs/archive/notes/p5/p5-results/ab-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/ap-v1.md b/docs/archive/notes/p5/p5-results/ap-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/ap-v1.md rename to docs/archive/notes/p5/p5-results/ap-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/apkci-v1.md b/docs/archive/notes/p5/p5-results/apkci-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/apkci-v1.md rename to docs/archive/notes/p5/p5-results/apkci-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/b1-review-v1.md b/docs/archive/notes/p5/p5-results/b1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/b1-review-v1.md rename to docs/archive/notes/p5/p5-results/b1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/b1-v1.md b/docs/archive/notes/p5/p5-results/b1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/b1-v1.md rename to docs/archive/notes/p5/p5-results/b1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/b1-v2.md b/docs/archive/notes/p5/p5-results/b1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/b1-v2.md rename to docs/archive/notes/p5/p5-results/b1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c0-v1.md b/docs/archive/notes/p5/p5-results/c0-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c0-v1.md rename to docs/archive/notes/p5/p5-results/c0-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-codex-review-v2.md b/docs/archive/notes/p5/p5-results/c1-codex-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-codex-review-v2.md rename to docs/archive/notes/p5/p5-results/c1-codex-review-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-codex-verify-v2.md b/docs/archive/notes/p5/p5-results/c1-codex-verify-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-codex-verify-v2.md rename to docs/archive/notes/p5/p5-results/c1-codex-verify-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-review-v2.md b/docs/archive/notes/p5/p5-results/c1-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-review-v2.md rename to docs/archive/notes/p5/p5-results/c1-review-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-review-v3.md b/docs/archive/notes/p5/p5-results/c1-review-v3.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-review-v3.md rename to docs/archive/notes/p5/p5-results/c1-review-v3.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-v1.md b/docs/archive/notes/p5/p5-results/c1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-v1.md rename to docs/archive/notes/p5/p5-results/c1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-v2.md b/docs/archive/notes/p5/p5-results/c1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-v2.md rename to docs/archive/notes/p5/p5-results/c1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1-v3.md b/docs/archive/notes/p5/p5-results/c1-v3.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1-v3.md rename to docs/archive/notes/p5/p5-results/c1-v3.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1f-v1.md b/docs/archive/notes/p5/p5-results/c1f-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1f-v1.md rename to docs/archive/notes/p5/p5-results/c1f-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/c1g-v1.md b/docs/archive/notes/p5/p5-results/c1g-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/c1g-v1.md rename to docs/archive/notes/p5/p5-results/c1g-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/dp-v1.md b/docs/archive/notes/p5/p5-results/dp-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/dp-v1.md rename to docs/archive/notes/p5/p5-results/dp-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/j0-review-v1.md b/docs/archive/notes/p5/p5-results/j0-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/j0-review-v1.md rename to docs/archive/notes/p5/p5-results/j0-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/j0-v1.md b/docs/archive/notes/p5/p5-results/j0-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/j0-v1.md rename to docs/archive/notes/p5/p5-results/j0-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/j0-v2.md b/docs/archive/notes/p5/p5-results/j0-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/j0-v2.md rename to docs/archive/notes/p5/p5-results/j0-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/j0-v3.md b/docs/archive/notes/p5/p5-results/j0-v3.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/j0-v3.md rename to docs/archive/notes/p5/p5-results/j0-v3.md diff --git a/docs/Disaggregated/notes/p5/p5-results/joint-v1.md b/docs/archive/notes/p5/p5-results/joint-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/joint-v1.md rename to docs/archive/notes/p5/p5-results/joint-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/p1-review-v1.md b/docs/archive/notes/p5/p5-results/p1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/p1-review-v1.md rename to docs/archive/notes/p5/p5-results/p1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/p1-v1.md b/docs/archive/notes/p5/p5-results/p1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/p1-v1.md rename to docs/archive/notes/p5/p5-results/p1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/p1-v2.md b/docs/archive/notes/p5/p5-results/p1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/p1-v2.md rename to docs/archive/notes/p5/p5-results/p1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/p5-close-codex-review.md b/docs/archive/notes/p5/p5-results/p5-close-codex-review.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/p5-close-codex-review.md rename to docs/archive/notes/p5/p5-results/p5-close-codex-review.md diff --git a/docs/Disaggregated/notes/p5/p5-results/s1-review-v1.md b/docs/archive/notes/p5/p5-results/s1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/s1-review-v1.md rename to docs/archive/notes/p5/p5-results/s1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/s1-v1.md b/docs/archive/notes/p5/p5-results/s1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/s1-v1.md rename to docs/archive/notes/p5/p5-results/s1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/s1-v2.md b/docs/archive/notes/p5/p5-results/s1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/s1-v2.md rename to docs/archive/notes/p5/p5-results/s1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/s1-v3.md b/docs/archive/notes/p5/p5-results/s1-v3.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/s1-v3.md rename to docs/archive/notes/p5/p5-results/s1-v3.md diff --git a/docs/Disaggregated/notes/p5/p5-results/t1-review-v1.md b/docs/archive/notes/p5/p5-results/t1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/t1-review-v1.md rename to docs/archive/notes/p5/p5-results/t1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/t1-v1.md b/docs/archive/notes/p5/p5-results/t1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/t1-v1.md rename to docs/archive/notes/p5/p5-results/t1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/t1-v2.md b/docs/archive/notes/p5/p5-results/t1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/t1-v2.md rename to docs/archive/notes/p5/p5-results/t1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-codex-review.md b/docs/archive/notes/p5/p5-results/v1-codex-review.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-codex-review.md rename to docs/archive/notes/p5/p5-results/v1-codex-review.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-codex-verify.md b/docs/archive/notes/p5/p5-results/v1-codex-verify.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-codex-verify.md rename to docs/archive/notes/p5/p5-results/v1-codex-verify.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-review-v1.md b/docs/archive/notes/p5/p5-results/v1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-review-v1.md rename to docs/archive/notes/p5/p5-results/v1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-review-v2.md b/docs/archive/notes/p5/p5-results/v1-review-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-review-v2.md rename to docs/archive/notes/p5/p5-results/v1-review-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-v1.md b/docs/archive/notes/p5/p5-results/v1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-v1.md rename to docs/archive/notes/p5/p5-results/v1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-v2.md b/docs/archive/notes/p5/p5-results/v1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-v2.md rename to docs/archive/notes/p5/p5-results/v1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/v1-v3.md b/docs/archive/notes/p5/p5-results/v1-v3.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/v1-v3.md rename to docs/archive/notes/p5/p5-results/v1-v3.md diff --git a/docs/Disaggregated/notes/p5/p5-results/w1-review-v1.md b/docs/archive/notes/p5/p5-results/w1-review-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/w1-review-v1.md rename to docs/archive/notes/p5/p5-results/w1-review-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/w1-v1.md b/docs/archive/notes/p5/p5-results/w1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/w1-v1.md rename to docs/archive/notes/p5/p5-results/w1-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/w1-v2.md b/docs/archive/notes/p5/p5-results/w1-v2.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/w1-v2.md rename to docs/archive/notes/p5/p5-results/w1-v2.md diff --git a/docs/Disaggregated/notes/p5/p5-results/wave1-codex-review.md b/docs/archive/notes/p5/p5-results/wave1-codex-review.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/wave1-codex-review.md rename to docs/archive/notes/p5/p5-results/wave1-codex-review.md diff --git a/docs/Disaggregated/notes/p5/p5-results/wave1-codex-verify.md b/docs/archive/notes/p5/p5-results/wave1-codex-verify.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/wave1-codex-verify.md rename to docs/archive/notes/p5/p5-results/wave1-codex-verify.md diff --git a/docs/Disaggregated/notes/p5/p5-results/x2-v1.md b/docs/archive/notes/p5/p5-results/x2-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/x2-v1.md rename to docs/archive/notes/p5/p5-results/x2-v1.md diff --git a/docs/Disaggregated/notes/p5/p5-results/x2m-v1.md b/docs/archive/notes/p5/p5-results/x2m-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5/p5-results/x2m-v1.md rename to docs/archive/notes/p5/p5-results/x2m-v1.md diff --git a/docs/Disaggregated/notes/p5/prompts/c1-round1.md b/docs/archive/notes/p5/prompts/c1-round1.md similarity index 100% rename from docs/Disaggregated/notes/p5/prompts/c1-round1.md rename to docs/archive/notes/p5/prompts/c1-round1.md diff --git a/docs/Disaggregated/notes/p5/prompts/v1-round1.md b/docs/archive/notes/p5/prompts/v1-round1.md similarity index 100% rename from docs/Disaggregated/notes/p5/prompts/v1-round1.md rename to docs/archive/notes/p5/prompts/v1-round1.md diff --git a/docs/Disaggregated/notes/p5/scout-backend-install-and-thread.md b/docs/archive/notes/p5/scout-backend-install-and-thread.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-backend-install-and-thread.md rename to docs/archive/notes/p5/scout-backend-install-and-thread.md diff --git a/docs/Disaggregated/notes/p5/scout-caps-reply-reverse.md b/docs/archive/notes/p5/scout-caps-reply-reverse.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-caps-reply-reverse.md rename to docs/archive/notes/p5/scout-caps-reply-reverse.md diff --git a/docs/Disaggregated/notes/p5/scout-gpu-writes-and-persistent-map-push.md b/docs/archive/notes/p5/scout-gpu-writes-and-persistent-map-push.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-gpu-writes-and-persistent-map-push.md rename to docs/archive/notes/p5/scout-gpu-writes-and-persistent-map-push.md diff --git a/docs/Disaggregated/notes/p5/scout-premortem.md b/docs/archive/notes/p5/scout-premortem.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-premortem.md rename to docs/archive/notes/p5/scout-premortem.md diff --git a/docs/Disaggregated/notes/p5/scout-test-ci-plumbing.md b/docs/archive/notes/p5/scout-test-ci-plumbing.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-test-ci-plumbing.md rename to docs/archive/notes/p5/scout-test-ci-plumbing.md diff --git a/docs/Disaggregated/notes/p5/scout-transport.md b/docs/archive/notes/p5/scout-transport.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-transport.md rename to docs/archive/notes/p5/scout-transport.md diff --git a/docs/Disaggregated/notes/p5/scout-unmigrated-census.md b/docs/archive/notes/p5/scout-unmigrated-census.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-unmigrated-census.md rename to docs/archive/notes/p5/scout-unmigrated-census.md diff --git a/docs/Disaggregated/notes/p5/scout-wire-codec.md b/docs/archive/notes/p5/scout-wire-codec.md similarity index 100% rename from docs/Disaggregated/notes/p5/scout-wire-codec.md rename to docs/archive/notes/p5/scout-wire-codec.md diff --git a/docs/Disaggregated/notes/p5/verb-census.md b/docs/archive/notes/p5/verb-census.md similarity index 100% rename from docs/Disaggregated/notes/p5/verb-census.md rename to docs/archive/notes/p5/verb-census.md diff --git a/docs/Disaggregated/notes/p5b/BRIEF-P5B.md b/docs/archive/notes/p5b/BRIEF-P5B.md similarity index 100% rename from docs/Disaggregated/notes/p5b/BRIEF-P5B.md rename to docs/archive/notes/p5b/BRIEF-P5B.md diff --git a/docs/Disaggregated/notes/p5b/PACKAGE-PREAMBLE.md b/docs/archive/notes/p5b/PACKAGE-PREAMBLE.md similarity index 100% rename from docs/Disaggregated/notes/p5b/PACKAGE-PREAMBLE.md rename to docs/archive/notes/p5b/PACKAGE-PREAMBLE.md diff --git a/docs/Disaggregated/notes/p5b/README.md b/docs/archive/notes/p5b/README.md similarity index 98% rename from docs/Disaggregated/notes/p5b/README.md rename to docs/archive/notes/p5b/README.md index 439a51cf..b4444325 100644 --- a/docs/Disaggregated/notes/p5b/README.md +++ b/docs/archive/notes/p5b/README.md @@ -1,6 +1,6 @@ # P5b — `inproc` verb migration(`37fc4fdb..82683d4a`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5b/p5b-results/blit-codex-v1.md b/docs/archive/notes/p5b/p5b-results/blit-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/blit-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/blit-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/c0b-v1.md b/docs/archive/notes/p5b/p5b-results/c0b-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/c0b-v1.md rename to docs/archive/notes/p5b/p5b-results/c0b-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/codex-apk-redmi-runner-v1.md b/docs/archive/notes/p5b/p5b-results/codex-apk-redmi-runner-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/codex-apk-redmi-runner-v1.md rename to docs/archive/notes/p5b/p5b-results/codex-apk-redmi-runner-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/d1-codex-v1.md b/docs/archive/notes/p5b/p5b-results/d1-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/d1-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/d1-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/docs-codex-v1.md b/docs/archive/notes/p5b/p5b-results/docs-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/docs-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/docs-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/docs-final-codex-v1.md b/docs/archive/notes/p5b/p5b-results/docs-final-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/docs-final-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/docs-final-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/f1-v1.md b/docs/archive/notes/p5b/p5b-results/f1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/f1-v1.md rename to docs/archive/notes/p5b/p5b-results/f1-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/i1-v1.md b/docs/archive/notes/p5b/p5b-results/i1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/i1-v1.md rename to docs/archive/notes/p5b/p5b-results/i1-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/indexspan-codex-v1.md b/docs/archive/notes/p5b/p5b-results/indexspan-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/indexspan-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/indexspan-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/joint-codex-v1.md b/docs/archive/notes/p5b/p5b-results/joint-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/joint-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/joint-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/mip-codex-v1.md b/docs/archive/notes/p5b/p5b-results/mip-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/mip-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/mip-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/p5b-close-codex-review.md b/docs/archive/notes/p5b/p5b-results/p5b-close-codex-review.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/p5b-close-codex-review.md rename to docs/archive/notes/p5b/p5b-results/p5b-close-codex-review.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/r1-codex-v1.md b/docs/archive/notes/p5b/p5b-results/r1-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/r1-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/r1-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/r2-v1.md b/docs/archive/notes/p5b/p5b-results/r2-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/r2-v1.md rename to docs/archive/notes/p5b/p5b-results/r2-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/sync-codex-v1.md b/docs/archive/notes/p5b/p5b-results/sync-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/sync-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/sync-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/t2-codex-v1.md b/docs/archive/notes/p5b/p5b-results/t2-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/t2-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/t2-codex-v1.md diff --git a/docs/Disaggregated/notes/p5b/p5b-results/wait-codex-v1.md b/docs/archive/notes/p5b/p5b-results/wait-codex-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5b/p5b-results/wait-codex-v1.md rename to docs/archive/notes/p5b/p5b-results/wait-codex-v1.md diff --git a/docs/Disaggregated/notes/p5c/BRIEF-p5c-audit.md b/docs/archive/notes/p5c/BRIEF-p5c-audit.md similarity index 100% rename from docs/Disaggregated/notes/p5c/BRIEF-p5c-audit.md rename to docs/archive/notes/p5c/BRIEF-p5c-audit.md diff --git a/docs/Disaggregated/notes/p5c/README.md b/docs/archive/notes/p5c/README.md similarity index 98% rename from docs/Disaggregated/notes/p5c/README.md rename to docs/archive/notes/p5c/README.md index 0d30e54c..6fb0885f 100644 --- a/docs/Disaggregated/notes/p5c/README.md +++ b/docs/archive/notes/p5c/README.md @@ -1,6 +1,6 @@ # P5c — `inproc` 共享内存读点归零(`11ac3de6..b88e8487`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5c/p5c-audit-v1.md b/docs/archive/notes/p5c/p5c-audit-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5c/p5c-audit-v1.md rename to docs/archive/notes/p5c/p5c-audit-v1.md diff --git a/docs/Disaggregated/notes/p5d/BRIEF-P5D-R3.md b/docs/archive/notes/p5d/BRIEF-P5D-R3.md similarity index 100% rename from docs/Disaggregated/notes/p5d/BRIEF-P5D-R3.md rename to docs/archive/notes/p5d/BRIEF-P5D-R3.md diff --git a/docs/Disaggregated/notes/p5d/P5D-INPROC-PERFORMANCE.md b/docs/archive/notes/p5d/P5D-INPROC-PERFORMANCE.md similarity index 100% rename from docs/Disaggregated/notes/p5d/P5D-INPROC-PERFORMANCE.md rename to docs/archive/notes/p5d/P5D-INPROC-PERFORMANCE.md diff --git a/docs/Disaggregated/notes/p5d/README.md b/docs/archive/notes/p5d/README.md similarity index 94% rename from docs/Disaggregated/notes/p5d/README.md rename to docs/archive/notes/p5d/README.md index ab41a7e3..d527a5ca 100644 --- a/docs/Disaggregated/notes/p5d/README.md +++ b/docs/archive/notes/p5d/README.md @@ -1,6 +1,6 @@ # P5d — `inproc` 性能专项(`cb06538c`、`56a77348`、`1f8de61b`) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5d/RESULTS-P5D-R3.md b/docs/archive/notes/p5d/RESULTS-P5D-R3.md similarity index 100% rename from docs/Disaggregated/notes/p5d/RESULTS-P5D-R3.md rename to docs/archive/notes/p5d/RESULTS-P5D-R3.md diff --git a/docs/Disaggregated/notes/p5d/reports/B.md b/docs/archive/notes/p5d/reports/B.md similarity index 100% rename from docs/Disaggregated/notes/p5d/reports/B.md rename to docs/archive/notes/p5d/reports/B.md diff --git a/docs/Disaggregated/notes/p5d/reports/C.md b/docs/archive/notes/p5d/reports/C.md similarity index 100% rename from docs/Disaggregated/notes/p5d/reports/C.md rename to docs/archive/notes/p5d/reports/C.md diff --git a/docs/Disaggregated/notes/p5d/reports/D.md b/docs/archive/notes/p5d/reports/D.md similarity index 100% rename from docs/Disaggregated/notes/p5d/reports/D.md rename to docs/archive/notes/p5d/reports/D.md diff --git a/docs/Disaggregated/notes/p5d/reports/E-lockstep-feasibility.md b/docs/archive/notes/p5d/reports/E-lockstep-feasibility.md similarity index 100% rename from docs/Disaggregated/notes/p5d/reports/E-lockstep-feasibility.md rename to docs/archive/notes/p5d/reports/E-lockstep-feasibility.md diff --git a/docs/Disaggregated/notes/p5d/reports/T.md b/docs/archive/notes/p5d/reports/T.md similarity index 100% rename from docs/Disaggregated/notes/p5d/reports/T.md rename to docs/archive/notes/p5d/reports/T.md diff --git a/docs/Disaggregated/notes/p5e/BRIEF-P5E.md b/docs/archive/notes/p5e/BRIEF-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/BRIEF-P5E.md rename to docs/archive/notes/p5e/BRIEF-P5E.md diff --git a/docs/Disaggregated/notes/p5e/CONTRACT-P5E-draft.md b/docs/archive/notes/p5e/CONTRACT-P5E-draft.md similarity index 100% rename from docs/Disaggregated/notes/p5e/CONTRACT-P5E-draft.md rename to docs/archive/notes/p5e/CONTRACT-P5E-draft.md diff --git a/docs/Disaggregated/notes/p5e/FACTS-P5E.md b/docs/archive/notes/p5e/FACTS-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/FACTS-P5E.md rename to docs/archive/notes/p5e/FACTS-P5E.md diff --git a/docs/Disaggregated/notes/p5e/FLIP-CHECKLIST.md b/docs/archive/notes/p5e/FLIP-CHECKLIST.md similarity index 100% rename from docs/Disaggregated/notes/p5e/FLIP-CHECKLIST.md rename to docs/archive/notes/p5e/FLIP-CHECKLIST.md diff --git a/docs/Disaggregated/notes/p5e/INTEGRATOR-DECISIONS-P5E.md b/docs/archive/notes/p5e/INTEGRATOR-DECISIONS-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/INTEGRATOR-DECISIONS-P5E.md rename to docs/archive/notes/p5e/INTEGRATOR-DECISIONS-P5E.md diff --git a/docs/Disaggregated/notes/p5e/KIMI-AUDIT-P5E.md b/docs/archive/notes/p5e/KIMI-AUDIT-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/KIMI-AUDIT-P5E.md rename to docs/archive/notes/p5e/KIMI-AUDIT-P5E.md diff --git a/docs/Disaggregated/notes/p5e/KIMI-DEVICE-VERIFY.md b/docs/archive/notes/p5e/KIMI-DEVICE-VERIFY.md similarity index 100% rename from docs/Disaggregated/notes/p5e/KIMI-DEVICE-VERIFY.md rename to docs/archive/notes/p5e/KIMI-DEVICE-VERIFY.md diff --git a/docs/Disaggregated/notes/p5e/P5E-RUNAHEAD.md b/docs/archive/notes/p5e/P5E-RUNAHEAD.md similarity index 100% rename from docs/Disaggregated/notes/p5e/P5E-RUNAHEAD.md rename to docs/archive/notes/p5e/P5E-RUNAHEAD.md diff --git a/docs/Disaggregated/notes/p5e/PACKAGE-PREAMBLE-P5E.md b/docs/archive/notes/p5e/PACKAGE-PREAMBLE-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PACKAGE-PREAMBLE-P5E.md rename to docs/archive/notes/p5e/PACKAGE-PREAMBLE-P5E.md diff --git a/docs/Disaggregated/notes/p5e/PERF-BASELINE-7c6f6886.md b/docs/archive/notes/p5e/PERF-BASELINE-7c6f6886.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PERF-BASELINE-7c6f6886.md rename to docs/archive/notes/p5e/PERF-BASELINE-7c6f6886.md diff --git a/docs/Disaggregated/notes/p5e/PERF-CORRECTION.md b/docs/archive/notes/p5e/PERF-CORRECTION.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PERF-CORRECTION.md rename to docs/archive/notes/p5e/PERF-CORRECTION.md diff --git a/docs/Disaggregated/notes/p5e/PERF-NEXT-TARGETS.md b/docs/archive/notes/p5e/PERF-NEXT-TARGETS.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PERF-NEXT-TARGETS.md rename to docs/archive/notes/p5e/PERF-NEXT-TARGETS.md diff --git a/docs/Disaggregated/notes/p5e/PERF-PROFILE-7c6f6886.md b/docs/archive/notes/p5e/PERF-PROFILE-7c6f6886.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PERF-PROFILE-7c6f6886.md rename to docs/archive/notes/p5e/PERF-PROFILE-7c6f6886.md diff --git a/docs/Disaggregated/notes/p5e/PREAMBLE-ADDENDUM-WAVE3.md b/docs/archive/notes/p5e/PREAMBLE-ADDENDUM-WAVE3.md similarity index 100% rename from docs/Disaggregated/notes/p5e/PREAMBLE-ADDENDUM-WAVE3.md rename to docs/archive/notes/p5e/PREAMBLE-ADDENDUM-WAVE3.md diff --git a/docs/Disaggregated/notes/p5e/README.md b/docs/archive/notes/p5e/README.md similarity index 98% rename from docs/Disaggregated/notes/p5e/README.md rename to docs/archive/notes/p5e/README.md index 6ec59cfa..7cfab38f 100644 --- a/docs/Disaggregated/notes/p5e/README.md +++ b/docs/archive/notes/p5e/README.md @@ -1,6 +1,6 @@ # P5e — 退役 Espryt draw path 的 lockstep(run-ahead,2026-09-19 收官) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5e/SCOUT-P5E.md b/docs/archive/notes/p5e/SCOUT-P5E.md similarity index 100% rename from docs/Disaggregated/notes/p5e/SCOUT-P5E.md rename to docs/archive/notes/p5e/SCOUT-P5E.md diff --git a/docs/Disaggregated/notes/p5e/STRICT-BASELINE-2fde7034.md b/docs/archive/notes/p5e/STRICT-BASELINE-2fde7034.md similarity index 100% rename from docs/Disaggregated/notes/p5e/STRICT-BASELINE-2fde7034.md rename to docs/archive/notes/p5e/STRICT-BASELINE-2fde7034.md diff --git a/docs/Disaggregated/notes/p5e/STRICT-WORKLIST.md b/docs/archive/notes/p5e/STRICT-WORKLIST.md similarity index 100% rename from docs/Disaggregated/notes/p5e/STRICT-WORKLIST.md rename to docs/archive/notes/p5e/STRICT-WORKLIST.md diff --git a/docs/Disaggregated/notes/p5e/TASK-c0e.md b/docs/archive/notes/p5e/TASK-c0e.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-c0e.md rename to docs/archive/notes/p5e/TASK-c0e.md diff --git a/docs/Disaggregated/notes/p5e/TASK-fb.md b/docs/archive/notes/p5e/TASK-fb.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-fb.md rename to docs/archive/notes/p5e/TASK-fb.md diff --git a/docs/Disaggregated/notes/p5e/TASK-gl.md b/docs/archive/notes/p5e/TASK-gl.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-gl.md rename to docs/archive/notes/p5e/TASK-gl.md diff --git a/docs/Disaggregated/notes/p5e/TASK-id.md b/docs/archive/notes/p5e/TASK-id.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-id.md rename to docs/archive/notes/p5e/TASK-id.md diff --git a/docs/Disaggregated/notes/p5e/TASK-mv.md b/docs/archive/notes/p5e/TASK-mv.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-mv.md rename to docs/archive/notes/p5e/TASK-mv.md diff --git a/docs/Disaggregated/notes/p5e/TASK-pa.md b/docs/archive/notes/p5e/TASK-pa.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-pa.md rename to docs/archive/notes/p5e/TASK-pa.md diff --git a/docs/Disaggregated/notes/p5e/TASK-pg.md b/docs/archive/notes/p5e/TASK-pg.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-pg.md rename to docs/archive/notes/p5e/TASK-pg.md diff --git a/docs/Disaggregated/notes/p5e/TASK-ra.md b/docs/archive/notes/p5e/TASK-ra.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-ra.md rename to docs/archive/notes/p5e/TASK-ra.md diff --git a/docs/Disaggregated/notes/p5e/TASK-ra2.md b/docs/archive/notes/p5e/TASK-ra2.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-ra2.md rename to docs/archive/notes/p5e/TASK-ra2.md diff --git a/docs/Disaggregated/notes/p5e/TASK-sb.md b/docs/archive/notes/p5e/TASK-sb.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-sb.md rename to docs/archive/notes/p5e/TASK-sb.md diff --git a/docs/Disaggregated/notes/p5e/TASK-tx2.md b/docs/archive/notes/p5e/TASK-tx2.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-tx2.md rename to docs/archive/notes/p5e/TASK-tx2.md diff --git a/docs/Disaggregated/notes/p5e/TASK-vi.md b/docs/archive/notes/p5e/TASK-vi.md similarity index 100% rename from docs/Disaggregated/notes/p5e/TASK-vi.md rename to docs/archive/notes/p5e/TASK-vi.md diff --git a/docs/Disaggregated/notes/p5e/WAVE3-CENSUS.md b/docs/archive/notes/p5e/WAVE3-CENSUS.md similarity index 100% rename from docs/Disaggregated/notes/p5e/WAVE3-CENSUS.md rename to docs/archive/notes/p5e/WAVE3-CENSUS.md diff --git a/docs/Disaggregated/notes/p5e/kimi-audit.md b/docs/archive/notes/p5e/kimi-audit.md similarity index 100% rename from docs/Disaggregated/notes/p5e/kimi-audit.md rename to docs/archive/notes/p5e/kimi-audit.md diff --git a/docs/Disaggregated/notes/p5e/reports/c0e-v1.md b/docs/archive/notes/p5e/reports/c0e-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/c0e-v1.md rename to docs/archive/notes/p5e/reports/c0e-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/device-verify-3cc4e1ec.md b/docs/archive/notes/p5e/reports/device-verify-3cc4e1ec.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/device-verify-3cc4e1ec.md rename to docs/archive/notes/p5e/reports/device-verify-3cc4e1ec.md diff --git a/docs/Disaggregated/notes/p5e/reports/fb-v1.md b/docs/archive/notes/p5e/reports/fb-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/fb-v1.md rename to docs/archive/notes/p5e/reports/fb-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/fix1-v1.md b/docs/archive/notes/p5e/reports/fix1-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/fix1-v1.md rename to docs/archive/notes/p5e/reports/fix1-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/gl-v1.md b/docs/archive/notes/p5e/reports/gl-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/gl-v1.md rename to docs/archive/notes/p5e/reports/gl-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/id-v1.md b/docs/archive/notes/p5e/reports/id-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/id-v1.md rename to docs/archive/notes/p5e/reports/id-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/mv-v1.md b/docs/archive/notes/p5e/reports/mv-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/mv-v1.md rename to docs/archive/notes/p5e/reports/mv-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/pa-v1.md b/docs/archive/notes/p5e/reports/pa-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/pa-v1.md rename to docs/archive/notes/p5e/reports/pa-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/pg-v1.md b/docs/archive/notes/p5e/reports/pg-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/pg-v1.md rename to docs/archive/notes/p5e/reports/pg-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/ra-v1.md b/docs/archive/notes/p5e/reports/ra-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/ra-v1.md rename to docs/archive/notes/p5e/reports/ra-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/ra2-v1.md b/docs/archive/notes/p5e/reports/ra2-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/ra2-v1.md rename to docs/archive/notes/p5e/reports/ra2-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/sb-v1.md b/docs/archive/notes/p5e/reports/sb-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/sb-v1.md rename to docs/archive/notes/p5e/reports/sb-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/tx2-v1.md b/docs/archive/notes/p5e/reports/tx2-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/tx2-v1.md rename to docs/archive/notes/p5e/reports/tx2-v1.md diff --git a/docs/Disaggregated/notes/p5e/reports/vi-v1.md b/docs/archive/notes/p5e/reports/vi-v1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/reports/vi-v1.md rename to docs/archive/notes/p5e/reports/vi-v1.md diff --git a/docs/Disaggregated/notes/p5e/scout-S1.md b/docs/archive/notes/p5e/scout-S1.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S1.md rename to docs/archive/notes/p5e/scout-S1.md diff --git a/docs/Disaggregated/notes/p5e/scout-S2.md b/docs/archive/notes/p5e/scout-S2.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S2.md rename to docs/archive/notes/p5e/scout-S2.md diff --git a/docs/Disaggregated/notes/p5e/scout-S3.md b/docs/archive/notes/p5e/scout-S3.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S3.md rename to docs/archive/notes/p5e/scout-S3.md diff --git a/docs/Disaggregated/notes/p5e/scout-S4.md b/docs/archive/notes/p5e/scout-S4.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S4.md rename to docs/archive/notes/p5e/scout-S4.md diff --git a/docs/Disaggregated/notes/p5e/scout-S5.md b/docs/archive/notes/p5e/scout-S5.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S5.md rename to docs/archive/notes/p5e/scout-S5.md diff --git a/docs/Disaggregated/notes/p5e/scout-S6.md b/docs/archive/notes/p5e/scout-S6.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S6.md rename to docs/archive/notes/p5e/scout-S6.md diff --git a/docs/Disaggregated/notes/p5e/scout-S7.md b/docs/archive/notes/p5e/scout-S7.md similarity index 100% rename from docs/Disaggregated/notes/p5e/scout-S7.md rename to docs/archive/notes/p5e/scout-S7.md diff --git a/docs/Disaggregated/notes/p5f/HANDOFF-CI-INPROC-20260920.md b/docs/archive/notes/p5f/HANDOFF-CI-INPROC-20260920.md similarity index 100% rename from docs/Disaggregated/notes/p5f/HANDOFF-CI-INPROC-20260920.md rename to docs/archive/notes/p5f/HANDOFF-CI-INPROC-20260920.md diff --git a/docs/Disaggregated/notes/p5f/HANDOFF-P5F.md b/docs/archive/notes/p5f/HANDOFF-P5F.md similarity index 100% rename from docs/Disaggregated/notes/p5f/HANDOFF-P5F.md rename to docs/archive/notes/p5f/HANDOFF-P5F.md diff --git a/docs/Disaggregated/notes/p5f/P5F-WIRE-COMPLETENESS.md b/docs/archive/notes/p5f/P5F-WIRE-COMPLETENESS.md similarity index 100% rename from docs/Disaggregated/notes/p5f/P5F-WIRE-COMPLETENESS.md rename to docs/archive/notes/p5f/P5F-WIRE-COMPLETENESS.md diff --git a/docs/Disaggregated/notes/p5f/README.md b/docs/archive/notes/p5f/README.md similarity index 94% rename from docs/Disaggregated/notes/p5f/README.md rename to docs/archive/notes/p5f/README.md index 9589c56b..f06c6801 100644 --- a/docs/Disaggregated/notes/p5f/README.md +++ b/docs/archive/notes/p5f/README.md @@ -1,6 +1,6 @@ # P5f — 一切状态上 wire(2026-09-20 收官) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 diff --git a/docs/Disaggregated/notes/p5f/close-report.md b/docs/archive/notes/p5f/close-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/close-report.md rename to docs/archive/notes/p5f/close-report.md diff --git a/docs/Disaggregated/notes/p5f/close-review.md b/docs/archive/notes/p5f/close-review.md similarity index 100% rename from docs/Disaggregated/notes/p5f/close-review.md rename to docs/archive/notes/p5f/close-review.md diff --git a/docs/Disaggregated/notes/p5f/device-report.md b/docs/archive/notes/p5f/device-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/device-report.md rename to docs/archive/notes/p5f/device-report.md diff --git a/docs/Disaggregated/notes/p5f/f0-dualblock-recon.md b/docs/archive/notes/p5f/f0-dualblock-recon.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-dualblock-recon.md rename to docs/archive/notes/p5f/f0-dualblock-recon.md diff --git a/docs/Disaggregated/notes/p5f/f0-egl.md b/docs/archive/notes/p5f/f0-egl.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-egl.md rename to docs/archive/notes/p5f/f0-egl.md diff --git a/docs/Disaggregated/notes/p5f/f0-env.md b/docs/archive/notes/p5f/f0-env.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-env.md rename to docs/archive/notes/p5f/f0-env.md diff --git a/docs/Disaggregated/notes/p5f/f0-fields.md b/docs/archive/notes/p5f/f0-fields.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-fields.md rename to docs/archive/notes/p5f/f0-fields.md diff --git a/docs/Disaggregated/notes/p5f/f0-magma.md b/docs/archive/notes/p5f/f0-magma.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-magma.md rename to docs/archive/notes/p5f/f0-magma.md diff --git a/docs/Disaggregated/notes/p5f/f0-registry.md b/docs/archive/notes/p5f/f0-registry.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-registry.md rename to docs/archive/notes/p5f/f0-registry.md diff --git a/docs/Disaggregated/notes/p5f/f0-reverse-channel.md b/docs/archive/notes/p5f/f0-reverse-channel.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-reverse-channel.md rename to docs/archive/notes/p5f/f0-reverse-channel.md diff --git a/docs/Disaggregated/notes/p5f/f0-statics.md b/docs/archive/notes/p5f/f0-statics.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f0-statics.md rename to docs/archive/notes/p5f/f0-statics.md diff --git a/docs/Disaggregated/notes/p5f/f1-report.md b/docs/archive/notes/p5f/f1-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/f1-report.md rename to docs/archive/notes/p5f/f1-report.md diff --git a/docs/Disaggregated/notes/p5f/fc-contract-draft.md b/docs/archive/notes/p5f/fc-contract-draft.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fc-contract-draft.md rename to docs/archive/notes/p5f/fc-contract-draft.md diff --git a/docs/Disaggregated/notes/p5f/fc-report.md b/docs/archive/notes/p5f/fc-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fc-report.md rename to docs/archive/notes/p5f/fc-report.md diff --git a/docs/Disaggregated/notes/p5f/fcl-e2e-report.md b/docs/archive/notes/p5f/fcl-e2e-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fcl-e2e-report.md rename to docs/archive/notes/p5f/fcl-e2e-report.md diff --git a/docs/Disaggregated/notes/p5f/fe-report.md b/docs/archive/notes/p5f/fe-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fe-report.md rename to docs/archive/notes/p5f/fe-report.md diff --git a/docs/Disaggregated/notes/p5f/fm-report.md b/docs/archive/notes/p5f/fm-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fm-report.md rename to docs/archive/notes/p5f/fm-report.md diff --git a/docs/Disaggregated/notes/p5f/fr-report.md b/docs/archive/notes/p5f/fr-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fr-report.md rename to docs/archive/notes/p5f/fr-report.md diff --git a/docs/Disaggregated/notes/p5f/fs-report.md b/docs/archive/notes/p5f/fs-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fs-report.md rename to docs/archive/notes/p5f/fs-report.md diff --git a/docs/Disaggregated/notes/p5f/fv-report.md b/docs/archive/notes/p5f/fv-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/fv-report.md rename to docs/archive/notes/p5f/fv-report.md diff --git a/docs/Disaggregated/notes/p5f/magma-inproc-fix.md b/docs/archive/notes/p5f/magma-inproc-fix.md similarity index 100% rename from docs/Disaggregated/notes/p5f/magma-inproc-fix.md rename to docs/archive/notes/p5f/magma-inproc-fix.md diff --git a/docs/Disaggregated/notes/p5f/magma-rd32-performance-fix.json b/docs/archive/notes/p5f/magma-rd32-performance-fix.json similarity index 100% rename from docs/Disaggregated/notes/p5f/magma-rd32-performance-fix.json rename to docs/archive/notes/p5f/magma-rd32-performance-fix.json diff --git a/docs/Disaggregated/notes/p5f/magma-rd32-performance-fix.md b/docs/archive/notes/p5f/magma-rd32-performance-fix.md similarity index 100% rename from docs/Disaggregated/notes/p5f/magma-rd32-performance-fix.md rename to docs/archive/notes/p5f/magma-rd32-performance-fix.md diff --git a/docs/Disaggregated/notes/p5f/magma-runahead.md b/docs/archive/notes/p5f/magma-runahead.md similarity index 100% rename from docs/Disaggregated/notes/p5f/magma-runahead.md rename to docs/archive/notes/p5f/magma-runahead.md diff --git a/docs/Disaggregated/notes/p5f/rd32-fourway.json b/docs/archive/notes/p5f/rd32-fourway.json similarity index 100% rename from docs/Disaggregated/notes/p5f/rd32-fourway.json rename to docs/archive/notes/p5f/rd32-fourway.json diff --git a/docs/Disaggregated/notes/p5f/rd32-fourway.md b/docs/archive/notes/p5f/rd32-fourway.md similarity index 100% rename from docs/Disaggregated/notes/p5f/rd32-fourway.md rename to docs/archive/notes/p5f/rd32-fourway.md diff --git a/docs/Disaggregated/notes/p5f/wave2-report.md b/docs/archive/notes/p5f/wave2-report.md similarity index 100% rename from docs/Disaggregated/notes/p5f/wave2-report.md rename to docs/archive/notes/p5f/wave2-report.md diff --git a/docs/Disaggregated/notes/p6/P6-CONTRACT-DRAFT.md b/docs/archive/notes/p6/P6-CONTRACT-DRAFT.md similarity index 100% rename from docs/Disaggregated/notes/p6/P6-CONTRACT-DRAFT.md rename to docs/archive/notes/p6/P6-CONTRACT-DRAFT.md diff --git a/docs/Disaggregated/notes/p6/P6-ENDSTATE-REVIEW.md b/docs/archive/notes/p6/P6-ENDSTATE-REVIEW.md similarity index 100% rename from docs/Disaggregated/notes/p6/P6-ENDSTATE-REVIEW.md rename to docs/archive/notes/p6/P6-ENDSTATE-REVIEW.md diff --git a/docs/Disaggregated/notes/p6/P6-SPAWN-PLAN.md b/docs/archive/notes/p6/P6-SPAWN-PLAN.md similarity index 100% rename from docs/Disaggregated/notes/p6/P6-SPAWN-PLAN.md rename to docs/archive/notes/p6/P6-SPAWN-PLAN.md diff --git a/docs/Disaggregated/notes/p6/README.md b/docs/archive/notes/p6/README.md similarity index 96% rename from docs/Disaggregated/notes/p6/README.md rename to docs/archive/notes/p6/README.md index cc8690b5..aec56da3 100644 --- a/docs/Disaggregated/notes/p6/README.md +++ b/docs/archive/notes/p6/README.md @@ -1,6 +1,6 @@ # P6 — spawn transport(2026-09-22 收官) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 @@ -13,7 +13,7 @@ - **阶段**:**P6** spawn transport - **状态**:✅ **已收官(2026-09-22)**;全部包已落地于 `feat/disaggregated`(头 `77cbd176`,2026-09-21),出口门第 1–6 项此前已达成,第 7/8 项于 2026-09-22 采齐。收官前核出的三项:server 进程侧 `PipeStats` 从未初始化(`srv=0 srvpark=0` 是结构性零,门 8 无 server 半边)**已在收尾中修好**;184 符号棘轮 CI 门(契约 §12.1)与契约 §2 分给 hs 的 `LinkTerms` / `Refuse` / 指纹拆分**未落地**,移交 P6.5(负控 S6 随之) -- **落地什么 / 范围**:十包全落地:**a6** 进程装配/链接边界审计 → **c6** 规范契约 + 数据面缝惰声明 → **lk** `RingControl` 按写者重组 → **so** `SocketTransport`(AF_UNIX SOCK_STREAM + SCM_RIGHTS,12 条契约用例)→ **sm** 两个独立启动的进程(非 fork,name 汇合、共享匿名段,四守卫接线)→ **cp** EGL 控制帧跨进程并应答(`InitCapabilities` wire kind 11)→ **hs** build stamp 显式 present 入指纹 + `abiMajor/Minor` 补检 + 真实 pid → **dl** device-lost 闩(取自描述符挂断绝不取自超时)+ `Session::Fail` 漏斗(`FatalFamilies.def` 词表 + 90 站点归一 + `SessionFault` 帧命名家族)+ Fatal 普查门 → **st** fb-slot memo 具名 Fatal → **t6** `integration-spawn` 车道(102/102)+ 名集合结构性一致门 + per-role 日志(`.client.log` / `.server.log`)。Android CI 新增 `spawn-acceptance` 臂,App 从 `nativeLibraryDir` 解析 server 路径。真机 Redmi `2f7cbe2e` 上 `OpenRA.DirectGLES` spawn ssim=1.0 连跑三次 + 6 case 绿;`DirectVulkan` 真机分离路径不确定分歧(inproc 与 spawn 同表现→ Magma × 真实 GPU,非 P6,桌面 lavapipe 为 1.0)。边界仍为 pbuffer / surfaceless / 离屏;真窗口归 P12。契约 [`MG_Remote/CONTRACT-P6.md`](../../../../MobileGL/MG_Remote/CONTRACT-P6.md);a6 产出 [`a6-audit-v1.md`](a6-audit-v1.md)、[`a6-link-experiment.md`](a6-link-experiment.md)(**server 不能不链 `MG_Impl`**:184 符号,P7 101 / P3b-P4b 14 / 共有 60 / P6 自己 6);终局重审 [`P6-ENDSTATE-REVIEW.md`](P6-ENDSTATE-REVIEW.md)。**收尾四项(2026-09-22,工作树未提交)**:wire 计数器——`PipeStats` 新增 `ByteClass::StageSegmentBytes`(`PipeWireCodec.cpp:878` `StageAllocate` 唯一收口)与 `CallClass::WireRecords`(`:1188` `EncodeRecord` 提交路径)+ staged-blob 直方图,汇总行新增 `seg=` / `wrec=`;`ServerMain.cpp` 补 `PipeStats::Init()` / `Shutdown()`(spawn server 此前从不武装计数器——修前 0 条汇总行、修后 29 条,SSIM 1.0 不变);`MOBILEGL_PIPE_STATS_FILE` 按角色派生 `.client.json` / `.server.json`(走 `RoleLogPath` 同一导出规则,基名不指向文件);工具入库 `tools/device_bench/p6/{ab_session.py,render_ab.py,README.md}` 与 `tools/trace_replay/run_android_retrace_local.py`(+19 行 `MOBILEGL_TRACE_PACKAGE`),`pin_device.sh` 新增 `2f7cbe2e` 条目(本板 GPU 钳 1050 MHz:`thermal_pwrlevel` 写 0 读回 1、`max_gpuclk` 只读 1 050 000 000;绝对值与 1100 MHz 时代的 `35d0befa` 行不可比)。 +- **落地什么 / 范围**:十包全落地:**a6** 进程装配/链接边界审计 → **c6** 规范契约 + 数据面缝惰声明 → **lk** `RingControl` 按写者重组 → **so** `SocketTransport`(AF_UNIX SOCK_STREAM + SCM_RIGHTS,12 条契约用例)→ **sm** 两个独立启动的进程(非 fork,name 汇合、共享匿名段,四守卫接线)→ **cp** EGL 控制帧跨进程并应答(`InitCapabilities` wire kind 11)→ **hs** build stamp 显式 present 入指纹 + `abiMajor/Minor` 补检 + 真实 pid → **dl** device-lost 闩(取自描述符挂断绝不取自超时)+ `Session::Fail` 漏斗(`FatalFamilies.def` 词表 + 90 站点归一 + `SessionFault` 帧命名家族)+ Fatal 普查门 → **st** fb-slot memo 具名 Fatal → **t6** `integration-spawn` 车道(102/102)+ 名集合结构性一致门 + per-role 日志(`.client.log` / `.server.log`)。Android CI 新增 `spawn-acceptance` 臂,App 从 `nativeLibraryDir` 解析 server 路径。真机 Redmi `2f7cbe2e` 上 `OpenRA.DirectGLES` spawn ssim=1.0 连跑三次 + 6 case 绿;`DirectVulkan` 真机分离路径不确定分歧(inproc 与 spawn 同表现→ Magma × 真实 GPU,非 P6,桌面 lavapipe 为 1.0)。边界仍为 pbuffer / surfaceless / 离屏;真窗口归 P12。契约 [`MG_Remote/CONTRACT-P6.md`](../../contracts/CONTRACT-P6.md);a6 产出 [`a6-audit-v1.md`](a6-audit-v1.md)、[`a6-link-experiment.md`](a6-link-experiment.md)(**server 不能不链 `MG_Impl`**:184 符号,P7 101 / P3b-P4b 14 / 共有 60 / P6 自己 6);终局重审 [`P6-ENDSTATE-REVIEW.md`](P6-ENDSTATE-REVIEW.md)。**收尾四项(2026-09-22,工作树未提交)**:wire 计数器——`PipeStats` 新增 `ByteClass::StageSegmentBytes`(`PipeWireCodec.cpp:878` `StageAllocate` 唯一收口)与 `CallClass::WireRecords`(`:1188` `EncodeRecord` 提交路径)+ staged-blob 直方图,汇总行新增 `seg=` / `wrec=`;`ServerMain.cpp` 补 `PipeStats::Init()` / `Shutdown()`(spawn server 此前从不武装计数器——修前 0 条汇总行、修后 29 条,SSIM 1.0 不变);`MOBILEGL_PIPE_STATS_FILE` 按角色派生 `.client.json` / `.server.json`(走 `RoleLogPath` 同一导出规则,基名不指向文件);工具入库 `tools/device_bench/p6/{ab_session.py,render_ab.py,README.md}` 与 `tools/trace_replay/run_android_retrace_local.py`(+19 行 `MOBILEGL_TRACE_PACKAGE`),`pin_device.sh` 新增 `2f7cbe2e` 条目(本板 GPU 钳 1050 MHz:`thermal_pwrlevel` 写 0 读回 1、`max_gpuclk` 只读 1 050 000 000;绝对值与 1100 MHz 时代的 `35d0befa` 行不可比)。 - **验收门 / 证据**:出口门(契约 §9)1–6 ✅:G1 pull 0/0/0/0、`.text` 恒 `0xa52203`;`integration-spawn` 与 split 名集合一致(可比 102==102)且同数绿;进程树运行时恰多一子进程、结束为零;每条 spawn 条目记子进程 pid 与 `transport=spawn`(`--require-spawn` 门);每包 red-once。**7/8 已采(2026-09-22)**:**门 7** 真机 reboot-clean 同热窗口配对 A/B(Redmi `2f7cbe2e` / M332BF / SM8750 / Adreno 830v2,CPU 定频 little 1555200 / big 1958400,GPU 钳 1050 MHz(本板 `thermal_pwrlevel` 写 0 读回 1、`max_gpuclk` 只读 1 050 000 000;绝对值与 1100 MHz 时代的 `35d0befa` 行不可比,只有同会话配对可比),`minecraft-1.21.4-rd12-odinlite-in-world` + DirectGLES,~1471 draws/帧;六臂交错 × best-of-3:18/18 runner 退出 0、36/36 pin check `PINNED`、0 `Fatal`;client CPU p50 ms/帧 inproc 7.880/7.889 vs spawn 7.876/7.869,均值 **−0.15%**,符号随臂序翻转,臂内散布 0.2–4.2%;第二会话 inproc/spawn 交错 × best-of-2:4/4 OK、8/8 `PINNED`、0 `Fatal`,7.987/7.989 vs 7.992/8.009 = **+0.16%**)——判读 **tie**(差值在臂内噪声内),如实记录、不设门;monolith 基线约贵 30%(−29.8% / −29.9%)。**门 8①** socket 门铃 vs inproc condvar:client 121.1 waits/帧、5.6–6.1 parks/帧,两传输逐字相同(run total 30 401–30 407);server inproc 10 866–11 963 waits/帧、5.0–6.2 parks/帧,spawn 10 415–10 416 waits/帧、4.66–4.90 parks/帧——socket 阻塞读**既不更便宜也不更贵**(契约 §9「阻塞读可能更便宜」未兑现),spawn server waits 少 8.9–12.9% 归因于 handoff 纪律而非门铃本身,唯一 socket 略差的列是 `clipark/f`(6.07 vs 5.60/5.75)。**门 8②③**(inproc,真实 trace retrace):`SEG_STAGE` 字节/帧 OpenRA 130.8 KB median / 8.01 MB steady mean(含启动负载 8.07 MB),rd12 816.2 KB median / 1.53 MB steady mean(含负载 10.79 MB,rd12 首帧 981 654 draws vs 稳态 ~1471,run-wide mean 约 7× 稳态,两个读法都报);分块后记录/帧 OpenRA 211 median / 206 mean,rd12 7 497 median / 7 504 mean;`maxrec=1808` 与分块前相同(默认 8 MiB chunk 预算在这些负载上从未被打到)。证据 [`notes/p6/gate7-device-ab.md`](gate7-device-ab.md) / [`notes/p6/gate8-doorbell-device.md`](gate8-doorbell-device.md) / [`notes/p6/gate8-wire-counters.md`](gate8-wire-counters.md) ## 收官快照(原 `CURRENT_STAGE_PROGRESS.md`,2026-09-22) diff --git a/docs/Disaggregated/notes/p6/a6-audit-rows.md b/docs/archive/notes/p6/a6-audit-rows.md similarity index 100% rename from docs/Disaggregated/notes/p6/a6-audit-rows.md rename to docs/archive/notes/p6/a6-audit-rows.md diff --git a/docs/Disaggregated/notes/p6/a6-audit-v1.md b/docs/archive/notes/p6/a6-audit-v1.md similarity index 100% rename from docs/Disaggregated/notes/p6/a6-audit-v1.md rename to docs/archive/notes/p6/a6-audit-v1.md diff --git a/docs/Disaggregated/notes/p6/a6-link-experiment-data.md b/docs/archive/notes/p6/a6-link-experiment-data.md similarity index 100% rename from docs/Disaggregated/notes/p6/a6-link-experiment-data.md rename to docs/archive/notes/p6/a6-link-experiment-data.md diff --git a/docs/Disaggregated/notes/p6/a6-link-experiment.md b/docs/archive/notes/p6/a6-link-experiment.md similarity index 100% rename from docs/Disaggregated/notes/p6/a6-link-experiment.md rename to docs/archive/notes/p6/a6-link-experiment.md diff --git a/docs/Disaggregated/notes/p6/census-classC.md b/docs/archive/notes/p6/census-classC.md similarity index 100% rename from docs/Disaggregated/notes/p6/census-classC.md rename to docs/archive/notes/p6/census-classC.md diff --git a/docs/Disaggregated/notes/p6/docs-closeout-measurements.md b/docs/archive/notes/p6/docs-closeout-measurements.md similarity index 100% rename from docs/Disaggregated/notes/p6/docs-closeout-measurements.md rename to docs/archive/notes/p6/docs-closeout-measurements.md diff --git a/docs/Disaggregated/notes/p6/docs-closeout-progress.md b/docs/archive/notes/p6/docs-closeout-progress.md similarity index 100% rename from docs/Disaggregated/notes/p6/docs-closeout-progress.md rename to docs/archive/notes/p6/docs-closeout-progress.md diff --git a/docs/Disaggregated/notes/p6/docs-closeout-roadmap.md b/docs/archive/notes/p6/docs-closeout-roadmap.md similarity index 100% rename from docs/Disaggregated/notes/p6/docs-closeout-roadmap.md rename to docs/archive/notes/p6/docs-closeout-roadmap.md diff --git a/docs/Disaggregated/notes/p6/gate7-device-ab.md b/docs/archive/notes/p6/gate7-device-ab.md similarity index 100% rename from docs/Disaggregated/notes/p6/gate7-device-ab.md rename to docs/archive/notes/p6/gate7-device-ab.md diff --git a/docs/Disaggregated/notes/p6/gate8-doorbell-device.md b/docs/archive/notes/p6/gate8-doorbell-device.md similarity index 100% rename from docs/Disaggregated/notes/p6/gate8-doorbell-device.md rename to docs/archive/notes/p6/gate8-doorbell-device.md diff --git a/docs/Disaggregated/notes/p6/gate8-wire-counters.md b/docs/archive/notes/p6/gate8-wire-counters.md similarity index 100% rename from docs/Disaggregated/notes/p6/gate8-wire-counters.md rename to docs/archive/notes/p6/gate8-wire-counters.md diff --git a/docs/Disaggregated/notes/p6/git-worktree-fix.md b/docs/archive/notes/p6/git-worktree-fix.md similarity index 100% rename from docs/Disaggregated/notes/p6/git-worktree-fix.md rename to docs/archive/notes/p6/git-worktree-fix.md diff --git a/docs/Disaggregated/notes/p6/lk-itemisation.md b/docs/archive/notes/p6/lk-itemisation.md similarity index 100% rename from docs/Disaggregated/notes/p6/lk-itemisation.md rename to docs/archive/notes/p6/lk-itemisation.md diff --git a/docs/Disaggregated/notes/p65/README.md b/docs/archive/notes/p65/README.md similarity index 96% rename from docs/Disaggregated/notes/p65/README.md rename to docs/archive/notes/p65/README.md index 1bffb5e9..4c066241 100644 --- a/docs/Disaggregated/notes/p65/README.md +++ b/docs/archive/notes/p65/README.md @@ -1,10 +1,10 @@ # P6.5 — 传输栈两轴化 + 跨机(第一波已落地,未宣布收官) -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 -- 终局改判(2026-09-22):client 与 server 可在不同机器、不同 OS / 架构上经 TCP 连接;同机 `spawn` 保留。传输栈拆成两根独立可选、握手协商、可混搭的轴——控制面 `ITransport`(`fork` / `unix:` / `tcp://host:port`)× 数据面 `ILink`(`ShmLink` / `StreamLink`)。设计摘要见 [`ARCHITECTURE.md`](../../ARCHITECTURE.md) §11.9,契约 `MobileGL/MG_Remote/CONTRACT-P65.md`。 +- 终局改判(2026-09-22):client 与 server 可在不同机器、不同 OS / 架构上经 TCP 连接;同机 `spawn` 保留。传输栈拆成两根独立可选、握手协商、可混搭的轴——控制面 `ITransport`(`fork` / `unix:` / `tcp://host:port`)× 数据面 `ILink`(`ShmLink` / `StreamLink`)。设计摘要见 [`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md) §11.9,契约 `MobileGL/MG_Remote/CONTRACT-P65.md`。 - 第一波(`feat/disaggregated@fe28bdb5`,2026-09-22):全 TCP 控制 + StreamLink 数据,WSL client ↔ Redmi server。包 lk2 → wf(wire 定宽 + `wireFingerprint` + `Refuse`)→ ct(tcp 端点 + keepalive + 令牌)→ sl(`StreamLink`)→ lf(日志前送)→ sv(supervisor + 前台 Service)→ t65。 - 验收:主机 unit 2399、integration-tcp loopback 102/102、**Redmi device-102 102/102 全 run-ahead ARMED**、代表性 retrace OpenRA 1.0;G1 0/0/0/0;真实远端 kill 133 ms、真实 Wi-Fi 中断 5053 ms 闩住 device loss。四切片代码审查无硬缺陷 + 两修复。 - **残余(CI / 后续)**:完整 39 例 split 子集 device golden 矩阵与链路必测数(逐帧 `kWaitReply` / RTT、`SEG_STAGE` 字节/帧、`PRESENT_CREDIT` 1/2/3、loopback tcp-vs-spawn 逐线程 CPU)。第二波(同机 TCP 控制 + 共享段数据、nd `auto` / sd)未开工。 @@ -50,7 +50,7 @@ ci-false(设备实图 SSIM 0.998729),不作本波红。跑器 `tools/trace_replay/run_tcp_matrix.py`(支持进度超时、 进程组清理、实际 run-ahead 证明与可核验 checkpoint)已入库。 -契约见 [`CONTRACT-P65.md`](../../../../MobileGL/MG_Remote/CONTRACT-P65.md), +契约见 [`CONTRACT-P65.md`](../../contracts/CONTRACT-P65.md), 制品身份与证据总索引见 [`evidence-index.md`](evidence-index.md); 具体结果与未决项见 [`validation-status.md`](validation-status.md)、 [`wire-and-validation.md`](wire-and-validation.md)、 @@ -58,7 +58,7 @@ ## 第一波设计与操作手册(原 `ROADMAP.md`「立即的下一项」节) -> 状态:**已实现并落地推送 `feat/disaggregated@fe28bdb5`(2026-09-22),代码审查完成(无硬缺陷 + 两修复),固定制品代表性再验收通过。** 主机 unit 2399、integration-tcp loopback 102、Redmi **device-102 102 全 ARMED**、代表性 retrace OpenRA 1.0 全 ARMED;G1 与真实断线门通过。完整 39 例 device golden 矩阵与余下链路必测数按「本地代表性、CI 兜底」留 CI/后续,**尚未宣布阶段收官**;逐项见 [`CURRENT_STAGE_PROGRESS.md`](../../CURRENT_STAGE_PROGRESS.md) 与 [`notes/p65/`](.)。目标形态:x86_64 的 WSL 进程作为 client,Redmi `2f7cbe2e`(aarch64,Adreno)上的 server 进程作为 server,两者在同一局域网内经 **TCP** 连接;`integration` 全部用例与 CI retrace 的 split 子集在这条链路上跑通并对上 golden。本节是 P6.5 行的第一波,只做「控制面 TCP + 数据面 stream」这一对;同机的「TCP 控制 + 共享段数据」混搭(nd `auto` / sd)是第二波,本节不做。 +> 状态:**已实现并落地推送 `feat/disaggregated@fe28bdb5`(2026-09-22),代码审查完成(无硬缺陷 + 两修复),固定制品代表性再验收通过。** 主机 unit 2399、integration-tcp loopback 102、Redmi **device-102 102 全 ARMED**、代表性 retrace OpenRA 1.0 全 ARMED;G1 与真实断线门通过。完整 39 例 device golden 矩阵与余下链路必测数按「本地代表性、CI 兜底」留 CI/后续,**尚未宣布阶段收官**;逐项见 [`CURRENT_STAGE_PROGRESS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md) 与 [`notes/p65/`](.)。目标形态:x86_64 的 WSL 进程作为 client,Redmi `2f7cbe2e`(aarch64,Adreno)上的 server 进程作为 server,两者在同一局域网内经 **TCP** 连接;`integration` 全部用例与 CI retrace 的 split 子集在这条链路上跑通并对上 golden。本节是 P6.5 行的第一波,只做「控制面 TCP + 数据面 stream」这一对;同机的「TCP 控制 + 共享段数据」混搭(nd `auto` / sd)是第二波,本节不做。 ### 1 设计时的树上基线(实现前快照) diff --git a/docs/Disaggregated/notes/p65/code-review-findings.md b/docs/archive/notes/p65/code-review-findings.md similarity index 100% rename from docs/Disaggregated/notes/p65/code-review-findings.md rename to docs/archive/notes/p65/code-review-findings.md diff --git a/docs/Disaggregated/notes/p65/data-link-implementation.md b/docs/archive/notes/p65/data-link-implementation.md similarity index 100% rename from docs/Disaggregated/notes/p65/data-link-implementation.md rename to docs/archive/notes/p65/data-link-implementation.md diff --git a/docs/Disaggregated/notes/p65/evidence-index.md b/docs/archive/notes/p65/evidence-index.md similarity index 100% rename from docs/Disaggregated/notes/p65/evidence-index.md rename to docs/archive/notes/p65/evidence-index.md diff --git a/docs/Disaggregated/notes/p65/mainmenu-trace-difference.md b/docs/archive/notes/p65/mainmenu-trace-difference.md similarity index 100% rename from docs/Disaggregated/notes/p65/mainmenu-trace-difference.md rename to docs/archive/notes/p65/mainmenu-trace-difference.md diff --git a/docs/Disaggregated/notes/p65/peer-loss-probe.md b/docs/archive/notes/p65/peer-loss-probe.md similarity index 100% rename from docs/Disaggregated/notes/p65/peer-loss-probe.md rename to docs/archive/notes/p65/peer-loss-probe.md diff --git a/docs/Disaggregated/notes/p65/performance.md b/docs/archive/notes/p65/performance.md similarity index 100% rename from docs/Disaggregated/notes/p65/performance.md rename to docs/archive/notes/p65/performance.md diff --git a/docs/Disaggregated/notes/p65/validation-status.md b/docs/archive/notes/p65/validation-status.md similarity index 100% rename from docs/Disaggregated/notes/p65/validation-status.md rename to docs/archive/notes/p65/validation-status.md diff --git a/docs/Disaggregated/notes/p65/window-1b-p7w5.md b/docs/archive/notes/p65/window-1b-p7w5.md similarity index 100% rename from docs/Disaggregated/notes/p65/window-1b-p7w5.md rename to docs/archive/notes/p65/window-1b-p7w5.md diff --git a/docs/Disaggregated/notes/p65/window-1b-p7w6.md b/docs/archive/notes/p65/window-1b-p7w6.md similarity index 100% rename from docs/Disaggregated/notes/p65/window-1b-p7w6.md rename to docs/archive/notes/p65/window-1b-p7w6.md diff --git a/docs/Disaggregated/notes/p65/wire-and-validation.md b/docs/archive/notes/p65/wire-and-validation.md similarity index 100% rename from docs/Disaggregated/notes/p65/wire-and-validation.md rename to docs/archive/notes/p65/wire-and-validation.md diff --git a/docs/Disaggregated/notes/p7/HANDOFF-2026-09-22.md b/docs/archive/notes/p7/HANDOFF-2026-09-22.md similarity index 100% rename from docs/Disaggregated/notes/p7/HANDOFF-2026-09-22.md rename to docs/archive/notes/p7/HANDOFF-2026-09-22.md diff --git a/docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md b/docs/archive/notes/p7/HANDOFF-2026-09-23.md similarity index 100% rename from docs/Disaggregated/notes/p7/HANDOFF-2026-09-23.md rename to docs/archive/notes/p7/HANDOFF-2026-09-23.md diff --git a/docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md b/docs/archive/notes/p7/INTEGRATOR-DECISIONS-P7.md similarity index 100% rename from docs/Disaggregated/notes/p7/INTEGRATOR-DECISIONS-P7.md rename to docs/archive/notes/p7/INTEGRATOR-DECISIONS-P7.md diff --git a/docs/Disaggregated/notes/p7/PLAN-PH-P34B-P7.md b/docs/archive/notes/p7/PLAN-PH-P34B-P7.md similarity index 100% rename from docs/Disaggregated/notes/p7/PLAN-PH-P34B-P7.md rename to docs/archive/notes/p7/PLAN-PH-P34B-P7.md diff --git a/docs/Disaggregated/notes/p7/README.md b/docs/archive/notes/p7/README.md similarity index 96% rename from docs/Disaggregated/notes/p7/README.md rename to docs/archive/notes/p7/README.md index 1cabd420..deeed20d 100644 --- a/docs/Disaggregated/notes/p7/README.md +++ b/docs/archive/notes/p7/README.md @@ -1,6 +1,6 @@ # P7 — DirectVulkan(Magma)全量迁移(2026-09-23 收官,ID-P7-63);Ph 必需小件 -> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../ROADMAP.md)、[`MEASUREMENTS.md`](../../MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 +> 本页是该阶段的**阶段汇总**:阶段表行、实测与落地形状的完整文本(2026-09-24 从上层索引移入,原文照录)都在这里;上层只留摘要——[`ROADMAP.md`](../../../Disaggregated/ROADMAP.md)、[`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md)、[`ARCHITECTURE.md`](../../../Disaggregated/ARCHITECTURE.md)。文中 `file:line` 与"今天""当前"按各段写成时的头理解;文中的 `MEASUREMENTS.md §N` / `ARCHITECTURE.md §17.x` 编号保留,对照表见 [`../README.md`](../README.md)。 ## 摘要 @@ -13,14 +13,14 @@ ## 阶段表行(原 `ROADMAP.md`) - **阶段**:**P7** DirectVulkan(Magma)全量迁移 -- **状态**:**✅ 已收官(2026-09-23,ID-P7-63)**:§8 九项全绿,终局窗口 3 门 3 36/36、门 5 PASS。**此前:wave 0–2 已落地,40% 检查点 6/9 已过(2026-09-22,`origin@b089e0de` + 集成树上的 B3)**:审计 + 五波计划见 `notes/p7/PLAN-PH-P34B-P7.md` §1.3 / §3,规范 `MG_Remote/CONTRACT-P7.md`,裁定 `notes/p7/INTEGRATOR-DECISIONS-P7.md`(ID-P7-1..33)。**wave 0** 仪器(Magma 两进程车道三臂、`link_ratchet.py` 186 基线、普查门 79 站点下行棘轮 + `MGPipeSessionFailHook`、设备跑器 `--matrix/--repeat/--archive-dir`、CTS caselists)`origin@801f8eda`;**wave 1** 设备窗口 #1(门 3 分母 36、E0–E7 归因、CTS `$BASE` 五块);**wave 2** X1(arm64 persistent-map tracker 从不认领 fault)、F1(split 起会提前)、C(`StateObjectDeathOps`、OQ-8、OQ-10、vertex-layout 拆分)、A(对齐 / native-range)、B(mip 半退役、深度 mip 烘焙 (A)(D)、copy-image、default-color-blit、回读 fence)、B2(multisample shape/aspect、AllocatorDebtScope ×2 删、(B′)、棘轮 **186→173**)、B3(**OpenRA 真机分歧的真因**:wire 臂 completed-frame-serial floor 在中帧 pooled-fence 提交退休时无证据上升 → 帧首次 `glBufferSubData` 走无序 host memcpy;计数 26→0,spawn 臂 red-once;ID-P7-33)——**树上 `@P7` 拒绝站点归零、§3.2 六退役全成、Magma 三臂 95/74/76**。**真机**:p7w4 门 3 AFTER 34/36 与 monolith 差 ≤ 0.0005;OpenRA p7w5 **27/27 golden**(ID-P7-34,项关闭);bsl-esc-menu = server 死 VkBuffer 无界累积(一帧 1.3 M 调用,ID-P7-32,**M2** 在修)。**已到集成树(2026-09-22 夜,ID-P7-37)**:B2 返工 r1 + r2、B3 返工 + 修复轮、V1、F 片 1–3 已推送 `origin@87584d0b`(2026-09-22 夜,ID-P7-39;pipe 门全绿:magma 97 / 76 / 71、full 535、verify 构建 1140 / 1074、OpenRA split 回放 0 条 unsound;四份 fable 审查 land with fixes,修复轮已落地,ID-P7-44);**M2 + M2 r2 已推送**(主机 bsl spawn server 825 → 546 MiB;memo destroy-epoch 关闭 wire store 句柄复用的 ABA;第二个泄漏 = descriptor set → M3;ID-P7-46);V1 修复 r2 已推送(read 侧负控数到 2、FATAL=0 摘要在 Close 前写出,ID-P7-47);**在跑**:F2 待派;窗口 1b 矩阵在跑(配对窗口在直连 LAN 上同样触发,ID-P7-41)。提交尾注已按用户令改写(origin `3c80cd62`)。**2026-09-23 更新(ID-P7-49–54)**:M3 已在 7ea7ce89 推送;B4 已集成于 pipe b19297d5,源码审查 land、完整集成门全绿(ID-P7-51)。p7w6 DirectGLES × TCP 38 例对照与 Photon / D24 同 APK monolith 对照已结案(ID-P7-52/53);两项错图亦在 monolith 复现。F2 PH-4/5/PH-2 已在包分支 commits `2c6a6e25` / `51480f8c` 落地并通过 Luna 审查(ID-P7-54);该矩阵不替代门 3。**CI 与门 4(ID-P7-55/56)**:CI 自 P6.5 起的七个红因已修;棘轮 171,`p7-magma` 余 86 标 `# P13`,门 4 关闭。**F2 与门 5 修复(ID-P7-57/58)**:Ph 余项与 fuzz 三臂落地;门 5 预演的三个 inproc CTS 缺陷修掉;窗口 2 工装与判读裁定(ID-P7-59)。**窗口 2 与收官审查(ID-P7-60–62)**:门 5 PASS;门 3 严格 33/36,三例 Iris monolith 同样不稳定 → 分布判据后 36/36;codex 收官审查修复、spawn 冷启动心跳(协议修订 2)、1:1 blit 最近邻落地;终局窗口 3 复跑。**余**:F2 PH-6 / PH-1 (3)(4) / PH-7 (5)、fuzz 臂 2 与完整包门;wave 3 棘轮 88;wave 4 CTS AFTER 和门 3;wave 5 fuzz 三臂与整体审查。逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../CURRENT_STAGE_PROGRESS.md) +- **状态**:**✅ 已收官(2026-09-23,ID-P7-63)**:§8 九项全绿,终局窗口 3 门 3 36/36、门 5 PASS。**此前:wave 0–2 已落地,40% 检查点 6/9 已过(2026-09-22,`origin@b089e0de` + 集成树上的 B3)**:审计 + 五波计划见 `notes/p7/PLAN-PH-P34B-P7.md` §1.3 / §3,规范 `MG_Remote/CONTRACT-P7.md`,裁定 `notes/p7/INTEGRATOR-DECISIONS-P7.md`(ID-P7-1..33)。**wave 0** 仪器(Magma 两进程车道三臂、`link_ratchet.py` 186 基线、普查门 79 站点下行棘轮 + `MGPipeSessionFailHook`、设备跑器 `--matrix/--repeat/--archive-dir`、CTS caselists)`origin@801f8eda`;**wave 1** 设备窗口 #1(门 3 分母 36、E0–E7 归因、CTS `$BASE` 五块);**wave 2** X1(arm64 persistent-map tracker 从不认领 fault)、F1(split 起会提前)、C(`StateObjectDeathOps`、OQ-8、OQ-10、vertex-layout 拆分)、A(对齐 / native-range)、B(mip 半退役、深度 mip 烘焙 (A)(D)、copy-image、default-color-blit、回读 fence)、B2(multisample shape/aspect、AllocatorDebtScope ×2 删、(B′)、棘轮 **186→173**)、B3(**OpenRA 真机分歧的真因**:wire 臂 completed-frame-serial floor 在中帧 pooled-fence 提交退休时无证据上升 → 帧首次 `glBufferSubData` 走无序 host memcpy;计数 26→0,spawn 臂 red-once;ID-P7-33)——**树上 `@P7` 拒绝站点归零、§3.2 六退役全成、Magma 三臂 95/74/76**。**真机**:p7w4 门 3 AFTER 34/36 与 monolith 差 ≤ 0.0005;OpenRA p7w5 **27/27 golden**(ID-P7-34,项关闭);bsl-esc-menu = server 死 VkBuffer 无界累积(一帧 1.3 M 调用,ID-P7-32,**M2** 在修)。**已到集成树(2026-09-22 夜,ID-P7-37)**:B2 返工 r1 + r2、B3 返工 + 修复轮、V1、F 片 1–3 已推送 `origin@87584d0b`(2026-09-22 夜,ID-P7-39;pipe 门全绿:magma 97 / 76 / 71、full 535、verify 构建 1140 / 1074、OpenRA split 回放 0 条 unsound;四份 fable 审查 land with fixes,修复轮已落地,ID-P7-44);**M2 + M2 r2 已推送**(主机 bsl spawn server 825 → 546 MiB;memo destroy-epoch 关闭 wire store 句柄复用的 ABA;第二个泄漏 = descriptor set → M3;ID-P7-46);V1 修复 r2 已推送(read 侧负控数到 2、FATAL=0 摘要在 Close 前写出,ID-P7-47);**在跑**:F2 待派;窗口 1b 矩阵在跑(配对窗口在直连 LAN 上同样触发,ID-P7-41)。提交尾注已按用户令改写(origin `3c80cd62`)。**2026-09-23 更新(ID-P7-49–54)**:M3 已在 7ea7ce89 推送;B4 已集成于 pipe b19297d5,源码审查 land、完整集成门全绿(ID-P7-51)。p7w6 DirectGLES × TCP 38 例对照与 Photon / D24 同 APK monolith 对照已结案(ID-P7-52/53);两项错图亦在 monolith 复现。F2 PH-4/5/PH-2 已在包分支 commits `2c6a6e25` / `51480f8c` 落地并通过 Luna 审查(ID-P7-54);该矩阵不替代门 3。**CI 与门 4(ID-P7-55/56)**:CI 自 P6.5 起的七个红因已修;棘轮 171,`p7-magma` 余 86 标 `# P13`,门 4 关闭。**F2 与门 5 修复(ID-P7-57/58)**:Ph 余项与 fuzz 三臂落地;门 5 预演的三个 inproc CTS 缺陷修掉;窗口 2 工装与判读裁定(ID-P7-59)。**窗口 2 与收官审查(ID-P7-60–62)**:门 5 PASS;门 3 严格 33/36,三例 Iris monolith 同样不稳定 → 分布判据后 36/36;codex 收官审查修复、spawn 冷启动心跳(协议修订 2)、1:1 blit 最近邻落地;终局窗口 3 复跑。**余**:F2 PH-6 / PH-1 (3)(4) / PH-7 (5)、fuzz 臂 2 与完整包门;wave 3 棘轮 88;wave 4 CTS AFTER 和门 3;wave 5 fuzz 三臂与整体审查。逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md) - **落地什么 / 范围**:`38919d45` 已补实际游戏的 server buffer consumers 和 Android 旋转 blit([报告](../p5f/magma-inproc-fix.md));`194382c9` 又完成 Magma run-ahead、GPU 延迟退休与 VAO 身份碰撞修复([报告](../p5f/magma-runahead.md));`ed507b1a..d56c0e83` 29 个 DirectVulkan 提交的 shape 波(随 `e1bf3677` 合入,本行此前未记)已退役 packed-float mip 原生 blit(`5310ff62`)、resolve(`ec4ca06d`)、占位图像(`WirePlaceholderImages.inc`)、copy-image 端点、XFB 捕获 span、纹理回读;`70fb6689` 链关闭 inproc RD32 性能回归(86.85→116.73 fps)。其余工作(2026-09-22 审计改判):~~`SetupDrawSnapshot` 探测字段塌成 dirty mask~~ 与 ~~`VertexInputStateFactory` 内容寻址 CSO~~ **本阶段拒做**(`SetupDraw` 在非 monolith 传输下分支到 `SetupWireDraw`,monolith 快照机制在 split 下不跑;无性能门;ID-P7-5);占位纹理原生化**已落地**(缺 split 车道条目);具名 UBO host payload(D-B8)走了直绑常驻 `VkBuffer` range 的备选,欠一次测量 + 裁定关 OQ-6;内部 shader 烘焙**半已落地**(颜色 blit `WireColorBlitSpirv.h`,仅 split 臂),欠深度 mip 烘焙 + `MOBILEGL_BAKED_INTERNAL_SHADERS` 新鲜度门(0 处);D18 按 ID-P7-6 读法一句闭。**新增必须项**:Magma `StateObjectDeathOps`(六处特判)、OQ-8 归档 `storageBlocks`(`MagmaProgramSource::EnsureStorageBlocks` 每 draw 重跑 SPIRV-Reflect)、OQ-10 `kCapResidentSubData` 从未发布(split 下双后端退回就地 memcpy)、两处 `MagmaP7AllocatorDebtScope`。**P6 真机发现(2026-09-22 归此)**:`DirectVulkan` 分离路径在 Redmi 上两次观测 0.988998 / 0.976494(inproc 与 spawn 同表现,pbuffer monolith 1.0;case 归属、重复次数未记录,原始证据不在树内;取自 run-ahead ARMED 下,**lockstep 对照从未在 golden 口径下跑过**——wave 1 的 E1)——Magma × 真实 GPU;树上 `@P7` 具名拒绝**实为 15 处 / 4 文件**(`multisample-blit-shape` / `-aspect`、`depth-stencil-mipmap`(已窄化到 D|S 合并)、`vertex-layout`、`vertex-format-conversion`、`texel-buffer-native-format`、`unaligned-{texel,storage,atomic}-buffer-range`、`storage-buffer-native-range`、`uniform-block-native-range`、`uniform-buffer-byte-tail` / `-dynamic-offset`、`copy-image-in-place`、`default-color-blit-shape`;外加 Magma 无 `StateObjectDeathOps` 与 `buffer-legacy-arm`),**全部是绕过 `Session::Fail` 与普查门的裸 abort**;必须退役 `.6/.8/.9/.11/.12/.13`,其余改 decline 即可;链接实验分给 P7 的 **101 个符号**(D12)。`DynamicBackendParameters` 定宽重写**不再是 P7 的**——它是跨平台 wire 的前提,归 P6.5 wf - **验收门 / 证据**:集成 + trace 在 Magma 的 push 与 split 下全绿(inproc 半已是硬门;**spawn / TCP 臂今天 DirectVulkan 条目为 0**——四条 split 臂硬编码 `MOBILEGL_BACKEND_TYPE=DirectGLES`,wave 0 补后端维度);verify 零分歧(verify 今天只注册 monolith,verify+split 撞旧 `PipeRespecifyScope` 断言,先清);真机 DirectVulkan split ssim 回到 1.0(分母排除 rd12 in-world 与 create-indirect,ID-P7-4;必须带 `RUN_AHEAD=0` 对照臂);184 符号棘轮(契约 §12.1)下降 P7 的 101 个——原 "`nm -D libMobileGLServer.so | grep glslang` 为空" 不可达,D12 裁定 server 镜像就是整个 `libMobileGL.so`;仪器 `scripts/link_ratchet.py`(存符号列表、只对新增红)归 wave 0;CTS 五块(`texture_*` / `shader_image_*` / `packed_pixels` / `direct_state_access.*` / `uniform_buffer_object*`)先立 monolith×DirectVulkan 基线再比 inproc,≤0.5 pp 且新 crash = 0 单独硬红。**再基线检查点:中点完成子系统 < 40% 立即重定基线**(分母 = `notes/p7/PLAN-PH-P34B-P7.md` §4 的 9 项) ### Ph 行(原 `ROADMAP.md`) - **阶段**:**Ph** 不可信对端加固 + 配对 -- **状态**:**已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.1)**:P6.5 已在 LAN 上跑 `tcp://0.0.0.0`,「P12 之前」的顺序陈述落后于树。必需小件(supervisor 命名子进程死亡、两处漏斗旁路、D11 五处上限、常量时间令牌 + 数据面绑定、`SEG_EVENT` 弃投闩)随 P7 波次推进;fuzz 臂 2 在 P7 之后;OQ-21 已裁定令牌足够(ID-P7-3)。**进展(2026-09-22 深夜)**:supervisor 命名子进程死亡 + 两处头层漏斗旁路已随 wave 0 落地(`origin@801f8eda`,`abort_sites` 79 成下行棘轮);其余小件是簇 **F** 包:**片 1–3 已到集成树(2026-09-22 夜,ID-P7-37)**——令牌合一 / ≥16 字节具名拒绝 / 无令牌只 loopback / smoke 进 CI;`Welcome.dataNonce` 绑定,TCP 上 250 ms 配对窗口消失,`wireFingerprint` 变更;PH-8 钳制证明——片 4–6 与 PH-7 (5) 需要对端字节的 fuzz 驱动,另派 F2(原顺序:常量时间令牌 / `Refuse{Authentication}` / ≥16 字节 + `tcp_supervisor_smoke.py` 接 CI → `Welcome.dataNonce` 数据面绑定 → PH-8 单测 → D11 五处 + PH-2 → PH-6 drop-with-latch → PH-1 (3)(4));逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../CURRENT_STAGE_PROGRESS.md)**F2 完成(2026-09-23,ID-P7-57)**:PH-1 (3)(4) 每会话闩、PH-6、PH-7 (5) fork 前认证 + 退避、fuzz 三臂进 CI——Ph 必需小件全部落地。**codex closeout(p7/int3)**:PH-5 界改为元素最小编码字节数(finding 3);`DrainRing` 在每次 pop 前查闩(finding 6:控制线程闩的窗口缩窄到查闩到 pop,未关闭)。 +- **状态**:**已审计(2026-09-22,`notes/p7/PLAN-PH-P34B-P7.md` §1.1)**:P6.5 已在 LAN 上跑 `tcp://0.0.0.0`,「P12 之前」的顺序陈述落后于树。必需小件(supervisor 命名子进程死亡、两处漏斗旁路、D11 五处上限、常量时间令牌 + 数据面绑定、`SEG_EVENT` 弃投闩)随 P7 波次推进;fuzz 臂 2 在 P7 之后;OQ-21 已裁定令牌足够(ID-P7-3)。**进展(2026-09-22 深夜)**:supervisor 命名子进程死亡 + 两处头层漏斗旁路已随 wave 0 落地(`origin@801f8eda`,`abort_sites` 79 成下行棘轮);其余小件是簇 **F** 包:**片 1–3 已到集成树(2026-09-22 夜,ID-P7-37)**——令牌合一 / ≥16 字节具名拒绝 / 无令牌只 loopback / smoke 进 CI;`Welcome.dataNonce` 绑定,TCP 上 250 ms 配对窗口消失,`wireFingerprint` 变更;PH-8 钳制证明——片 4–6 与 PH-7 (5) 需要对端字节的 fuzz 驱动,另派 F2(原顺序:常量时间令牌 / `Refuse{Authentication}` / ≥16 字节 + `tcp_supervisor_smoke.py` 接 CI → `Welcome.dataNonce` 数据面绑定 → PH-8 单测 → D11 五处 + PH-2 → PH-6 drop-with-latch → PH-1 (3)(4));逐日状态见 [`CURRENT_STAGE_STATUS.md`](../../../Disaggregated/CURRENT_STAGE_PROGRESS.md)**F2 完成(2026-09-23,ID-P7-57)**:PH-1 (3)(4) 每会话闩、PH-6、PH-7 (5) fork 前认证 + 退避、fuzz 三臂进 CI——Ph 必需小件全部落地。**codex closeout(p7/int3)**:PH-5 界改为元素最小编码字节数(finding 3);`DrainRing` 在每次 pop 前查闩(finding 6:控制线程闩的窗口缩窄到查闩到 pop,未关闭)。 - **落地什么 / 范围**:`Session::Fail` 的策略翻成每会话闩(**按 ID-P7-1 重定界**:98 处 `SessionFail` + 6 处 `WireLogFatal` 的字面翻转拒做——≥9 处返回引用没有诚实返回值;只对对端字节可达站点 latch-and-decline;P6 dl 收口到的是**两个漏斗 + 两处头层旁路**(`Server/StagedShadow.h`、`Server/StagedTextureStore.h`),不是一处;P6.5 fork-per-session 已给出「下一连接照常服务」);handle slot 预算(`BackendSlotTable` 的两条拒绝从 `MOBILEGL_ASSERT` 变 release 下的具名拒绝,杜绝静默 null twin);readback 尺寸门挪 server 侧且在 resize **之前**设绝对上限;`StagedTextureStore` 按该 level 宣告范围设界;`ArchiveVector` 按 `count × 元素最小编码字节数` 设上限(codex closeout finding 3 改自 `count * sizeof(element)`,后者拒掉编码器自己写的紧凑归档;map / set 仍按每项 1 字节);`SEG_EVENT` 溢出不再能让一个不排空(或仅涓流排空)的对端在 30 秒内、乃至瞬间用 `Fatal{EventRingOverflow}` 打掉承载它的 server 进程(drop-with-latch,不等 PH-1,ID-P7-2;原文「60 秒」是两轮 30 s 的算术上界);**配对 / 认证**(`Hello` 带令牌与无令牌只 loopback **已由 P6.5 ct 落地**;欠常量时间比较、`Refuse{Authentication}` 入词表、≥16 字节、**数据面按 `Welcome.dataNonce` 绑定到已认证的控制连接**(今天 `AcceptPair` 按到达顺序配对、从不查 peer)、fork 前认证;OQ-21 裁定令牌足够、不做 TLS);段 / 窗口尺寸由 server 钳制(P6.5 nd 已陈述,欠一条钳制单测) - **验收门 / 证据**:非 loopback 监听在无令牌时具名拒绝(机制已在;名字入词表 + `tcp_supervisor_smoke.py` 接 CI 后算达成);畸形帧 / 超界计数 / 不排空对端的模糊臂下 server **不 abort、会话闩住、下一连接照常服务**(臂 1 机制已在、欠端到端脚本;臂 2 = PH-1 (3)(4) + D11;臂 3 = PH-6);`Session::Fail` 站点普查门扩到 server 镜像且 `abort_sites` 变棘轮(今天只扫 `MG_Remote`、站点数记了不比,wave 0);契约 §12.2 五处无界分配各一条 red-once(**五处全开**,不是两处) diff --git a/docs/Disaggregated/notes/p7/device-window-1-runbook.md b/docs/archive/notes/p7/device-window-1-runbook.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1-runbook.md rename to docs/archive/notes/p7/device-window-1-runbook.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/README.md b/docs/archive/notes/p7/device-window-1/00-session/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/README.md rename to docs/archive/notes/p7/device-window-1/00-session/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/apk-install.txt b/docs/archive/notes/p7/device-window-1/00-session/apk-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/apk-install.txt rename to docs/archive/notes/p7/device-window-1/00-session/apk-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/apk-p7w2-install.txt b/docs/archive/notes/p7/device-window-1/00-session/apk-p7w2-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/apk-p7w2-install.txt rename to docs/archive/notes/p7/device-window-1/00-session/apk-p7w2-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/apk-p7w2.sha256 b/docs/archive/notes/p7/device-window-1/00-session/apk-p7w2.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/apk-p7w2.sha256 rename to docs/archive/notes/p7/device-window-1/00-session/apk-p7w2.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/apk.sha256 b/docs/archive/notes/p7/device-window-1/00-session/apk.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/apk.sha256 rename to docs/archive/notes/p7/device-window-1/00-session/apk.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/boot-id-after.txt b/docs/archive/notes/p7/device-window-1/00-session/boot-id-after.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/boot-id-after.txt rename to docs/archive/notes/p7/device-window-1/00-session/boot-id-after.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/boot-id-before.txt b/docs/archive/notes/p7/device-window-1/00-session/boot-id-before.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/boot-id-before.txt rename to docs/archive/notes/p7/device-window-1/00-session/boot-id-before.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/deviceidle-before.txt b/docs/archive/notes/p7/device-window-1/00-session/deviceidle-before.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/deviceidle-before.txt rename to docs/archive/notes/p7/device-window-1/00-session/deviceidle-before.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/deviceidle-whitelist-before.txt b/docs/archive/notes/p7/device-window-1/00-session/deviceidle-whitelist-before.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/deviceidle-whitelist-before.txt rename to docs/archive/notes/p7/device-window-1/00-session/deviceidle-whitelist-before.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/packages.txt b/docs/archive/notes/p7/device-window-1/00-session/packages.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/packages.txt rename to docs/archive/notes/p7/device-window-1/00-session/packages.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/pin-check-00.txt b/docs/archive/notes/p7/device-window-1/00-session/pin-check-00.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/pin-check-00.txt rename to docs/archive/notes/p7/device-window-1/00-session/pin-check-00.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/00-session/pin-session-start.txt b/docs/archive/notes/p7/device-window-1/00-session/pin-session-start.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/00-session/pin-session-start.txt rename to docs/archive/notes/p7/device-window-1/00-session/pin-session-start.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/README.md b/docs/archive/notes/p7/device-window-1/CTS-base/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/README.md rename to docs/archive/notes/p7/device-window-1/CTS-base/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-dsa.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-after-dsa.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-dsa.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-after-dsa.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-packed-pixels.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-after-packed-pixels.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-packed-pixels.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-after-packed-pixels.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-shader-image.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-after-shader-image.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-shader-image.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-after-shader-image.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-ssbo.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-after-ssbo.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-ssbo.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-after-ssbo.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-texture.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-after-texture.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-after-texture.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-after-texture.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-dsa.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-before-dsa.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-dsa.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-before-dsa.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-packed-pixels.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-before-packed-pixels.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-packed-pixels.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-before-packed-pixels.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-shader-image.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-before-shader-image.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-shader-image.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-before-shader-image.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-ssbo.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-before-ssbo.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-ssbo.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-before-ssbo.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-texture.txt b/docs/archive/notes/p7/device-window-1/CTS-base/pin-before-texture.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/pin-before-texture.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/pin-before-texture.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/preflight.txt b/docs/archive/notes/p7/device-window-1/CTS-base/preflight.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/preflight.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/preflight.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/probe-gl46.txt b/docs/archive/notes/p7/device-window-1/CTS-base/probe-gl46.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/probe-gl46.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/probe-gl46.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-dsa.json b/docs/archive/notes/p7/device-window-1/CTS-base/report-dsa.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-dsa.json rename to docs/archive/notes/p7/device-window-1/CTS-base/report-dsa.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-dsa.txt b/docs/archive/notes/p7/device-window-1/CTS-base/report-dsa.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-dsa.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/report-dsa.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-packed-pixels.json b/docs/archive/notes/p7/device-window-1/CTS-base/report-packed-pixels.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-packed-pixels.json rename to docs/archive/notes/p7/device-window-1/CTS-base/report-packed-pixels.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-packed-pixels.txt b/docs/archive/notes/p7/device-window-1/CTS-base/report-packed-pixels.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-packed-pixels.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/report-packed-pixels.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-shader-image.json b/docs/archive/notes/p7/device-window-1/CTS-base/report-shader-image.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-shader-image.json rename to docs/archive/notes/p7/device-window-1/CTS-base/report-shader-image.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-shader-image.txt b/docs/archive/notes/p7/device-window-1/CTS-base/report-shader-image.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-shader-image.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/report-shader-image.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-ssbo.json b/docs/archive/notes/p7/device-window-1/CTS-base/report-ssbo.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-ssbo.json rename to docs/archive/notes/p7/device-window-1/CTS-base/report-ssbo.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-ssbo.txt b/docs/archive/notes/p7/device-window-1/CTS-base/report-ssbo.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-ssbo.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/report-ssbo.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-texture.json b/docs/archive/notes/p7/device-window-1/CTS-base/report-texture.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-texture.json rename to docs/archive/notes/p7/device-window-1/CTS-base/report-texture.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-texture.txt b/docs/archive/notes/p7/device-window-1/CTS-base/report-texture.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/report-texture.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/report-texture.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/run-base.log b/docs/archive/notes/p7/device-window-1/CTS-base/run-base.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/run-base.log rename to docs/archive/notes/p7/device-window-1/CTS-base/run-base.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/crashed.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/crashed.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/hung.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/hung.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/hung.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/hung.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/unrun.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/unrun.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/dsa/unrun.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/dsa/unrun.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/crashed.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/crashed.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/hung.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/hung.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/hung.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/hung.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/unrun.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/unrun.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/packed-pixels/unrun.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/packed-pixels/unrun.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/crashed.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/crashed.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/hung.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/hung.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/hung.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/hung.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/unrun.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/unrun.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/shader-image/unrun.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/shader-image/unrun.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/crashed.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/crashed.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/hung.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/hung.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/hung.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/hung.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/unrun.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/unrun.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/ssbo/unrun.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/ssbo/unrun.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/crashed.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/crashed.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/hung.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/hung.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/hung.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/hung.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/skipped.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/skipped.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/skipped.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/skipped.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/unrun.txt b/docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/unrun.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/CTS-base/runs/texture/unrun.txt rename to docs/archive/notes/p7/device-window-1/CTS-base/runs/texture/unrun.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.json b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.json rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc.log b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-inproc.log rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.json b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.json rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith.log b/docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/E0a-monolith.log rename to docs/archive/notes/p7/device-window-1/E0-attribution/E0a-monolith.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/divergent-cases.md b/docs/archive/notes/p7/device-window-1/E0-attribution/divergent-cases.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/divergent-cases.md rename to docs/archive/notes/p7/device-window-1/E0-attribution/divergent-cases.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/exclusions.md b/docs/archive/notes/p7/device-window-1/E0-attribution/exclusions.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/exclusions.md rename to docs/archive/notes/p7/device-window-1/E0-attribution/exclusions.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-after-inproc.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/pin-after-inproc.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-after-inproc.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/pin-after-inproc.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-after-monolith.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/pin-after-monolith.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-after-monolith.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/pin-after-monolith.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-before-inproc.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/pin-before-inproc.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-before-inproc.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/pin-before-inproc.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-before-monolith.txt b/docs/archive/notes/p7/device-window-1/E0-attribution/pin-before-monolith.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E0-attribution/pin-before-monolith.txt rename to docs/archive/notes/p7/device-window-1/E0-attribution/pin-before-monolith.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1-summary.json b/docs/archive/notes/p7/device-window-1/E1-lockstep/E1-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1-summary.json rename to docs/archive/notes/p7/device-window-1/E1-lockstep/E1-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1-summary.txt b/docs/archive/notes/p7/device-window-1/E1-lockstep/E1-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1-summary.txt rename to docs/archive/notes/p7/device-window-1/E1-lockstep/E1-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1.log b/docs/archive/notes/p7/device-window-1/E1-lockstep/E1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/E1.log rename to docs/archive/notes/p7/device-window-1/E1-lockstep/E1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/README.md b/docs/archive/notes/p7/device-window-1/E1-lockstep/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/README.md rename to docs/archive/notes/p7/device-window-1/E1-lockstep/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/arm-proof.txt b/docs/archive/notes/p7/device-window-1/E1-lockstep/arm-proof.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/arm-proof.txt rename to docs/archive/notes/p7/device-window-1/E1-lockstep/arm-proof.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/pin-after.txt b/docs/archive/notes/p7/device-window-1/E1-lockstep/pin-after.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/pin-after.txt rename to docs/archive/notes/p7/device-window-1/E1-lockstep/pin-after.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/pin-before.txt b/docs/archive/notes/p7/device-window-1/E1-lockstep/pin-before.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E1-lockstep/pin-before.txt rename to docs/archive/notes/p7/device-window-1/E1-lockstep/pin-before.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/E4-segv/E4a-gles-inproc.log b/docs/archive/notes/p7/device-window-1/E4-segv/E4a-gles-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E4-segv/E4a-gles-inproc.log rename to docs/archive/notes/p7/device-window-1/E4-segv/E4a-gles-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E4-segv/E4b-gles-inproc-noblock.log b/docs/archive/notes/p7/device-window-1/E4-segv/E4b-gles-inproc-noblock.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E4-segv/E4b-gles-inproc-noblock.log rename to docs/archive/notes/p7/device-window-1/E4-segv/E4b-gles-inproc-noblock.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E4-segv/README.md b/docs/archive/notes/p7/device-window-1/E4-segv/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E4-segv/README.md rename to docs/archive/notes/p7/device-window-1/E4-segv/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-monolith.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-monolith.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-monolith.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-monolith.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-1.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-1.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-2.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-2.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-3.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-3.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E7-cold-ra1-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-1.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-1.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-2.log b/docs/archive/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-2.log rename to docs/archive/notes/p7/device-window-1/E7-coldcache/E8-cold-fif1-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-openra-ra0-summary.json b/docs/archive/notes/p7/device-window-1/F1-verify/F1-openra-ra0-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-openra-ra0-summary.json rename to docs/archive/notes/p7/device-window-1/F1-verify/F1-openra-ra0-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-openra-ra1-summary.json b/docs/archive/notes/p7/device-window-1/F1-verify/F1-openra-ra1-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-openra-ra1-summary.json rename to docs/archive/notes/p7/device-window-1/F1-verify/F1-openra-ra1-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-ra0.log b/docs/archive/notes/p7/device-window-1/F1-verify/F1-ra0.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-ra0.log rename to docs/archive/notes/p7/device-window-1/F1-verify/F1-ra0.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-ra1.log b/docs/archive/notes/p7/device-window-1/F1-verify/F1-ra1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/F1-verify/F1-ra1.log rename to docs/archive/notes/p7/device-window-1/F1-verify/F1-ra1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/F1-verify/README.md b/docs/archive/notes/p7/device-window-1/F1-verify/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/F1-verify/README.md rename to docs/archive/notes/p7/device-window-1/F1-verify/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/README.md b/docs/archive/notes/p7/device-window-1/W4-verify/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/README.md rename to docs/archive/notes/p7/device-window-1/W4-verify/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/apk-p7w4-install.txt b/docs/archive/notes/p7/device-window-1/W4-verify/apk-p7w4-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/apk-p7w4-install.txt rename to docs/archive/notes/p7/device-window-1/W4-verify/apk-p7w4-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/apk-p7w4.sha256 b/docs/archive/notes/p7/device-window-1/W4-verify/apk-p7w4.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/apk-p7w4.sha256 rename to docs/archive/notes/p7/device-window-1/W4-verify/apk-p7w4.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-cold-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/audit-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-cold-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/audit-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-cold-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/audit-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-cold-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/audit-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-warm-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/audit-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/audit-warm-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/audit-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-inproc.log b/docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-inproc.log rename to docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-monolith.log b/docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-monolith.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-monolith.log rename to docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-monolith.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-spawn.log b/docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-spawn.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-mem-spawn.log rename to docs/archive/notes/p7/device-window-1/W4-verify/bsl-mem-spawn.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-monolith.log b/docs/archive/notes/p7/device-window-1/W4-verify/bsl-monolith.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-monolith.log rename to docs/archive/notes/p7/device-window-1/W4-verify/bsl-monolith.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-spawn.log b/docs/archive/notes/p7/device-window-1/W4-verify/bsl-spawn.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/bsl-spawn.log rename to docs/archive/notes/p7/device-window-1/W4-verify/bsl-spawn.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-4.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-4.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-inproc-4.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump-inproc-4.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-monolith-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump-monolith-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump-monolith-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump-monolith-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-inproc-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump2-inproc-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-spawn-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump2-spawn-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-spawn-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump2-spawn-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-spawn-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/dump2-spawn-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/dump2-spawn-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/dump2-spawn-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif1-cold-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif1-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif1-cold-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif1-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif1-cold-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif1-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif1-cold-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif1-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif4-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif4-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif4-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif4-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif4-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif4-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif4-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif8-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif8-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif8-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif8-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/fif8-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/fif8-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/fif8-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/iterationt.log b/docs/archive/notes/p7/device-window-1/W4-verify/iterationt.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/iterationt.log rename to docs/archive/notes/p7/device-window-1/W4-verify/iterationt.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.json b/docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.json rename to docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.json diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.txt b/docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.txt rename to docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc.log b/docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/matrix-inproc.log rename to docs/archive/notes/p7/device-window-1/W4-verify/matrix-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/openra-cold-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/openra-cold-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-cold-4.log b/docs/archive/notes/p7/device-window-1/W4-verify/plain-cold-4.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-cold-4.log rename to docs/archive/notes/p7/device-window-1/W4-verify/plain-cold-4.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-cold-5.log b/docs/archive/notes/p7/device-window-1/W4-verify/plain-cold-5.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-cold-5.log rename to docs/archive/notes/p7/device-window-1/W4-verify/plain-cold-5.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-warm-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/plain-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/plain-warm-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/plain-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/spawn-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/spawn-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/spawn-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/spawn-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-3.log b/docs/archive/notes/p7/device-window-1/W4-verify/spawn-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/spawn-3.log rename to docs/archive/notes/p7/device-window-1/W4-verify/spawn-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-audit-warm-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/stats-audit-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-audit-warm-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/stats-audit-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-cold-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/stats-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-cold-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/stats-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-cold-2.log b/docs/archive/notes/p7/device-window-1/W4-verify/stats-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-cold-2.log rename to docs/archive/notes/p7/device-window-1/W4-verify/stats-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-lockstep-cold-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/stats-lockstep-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-lockstep-cold-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/stats-lockstep-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-warm-1.log b/docs/archive/notes/p7/device-window-1/W4-verify/stats-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W4-verify/stats-warm-1.log rename to docs/archive/notes/p7/device-window-1/W4-verify/stats-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/README.md b/docs/archive/notes/p7/device-window-1/W5-verify/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/README.md rename to docs/archive/notes/p7/device-window-1/W5-verify/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/apk-p7w5-install.txt b/docs/archive/notes/p7/device-window-1/W5-verify/apk-p7w5-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/apk-p7w5-install.txt rename to docs/archive/notes/p7/device-window-1/W5-verify/apk-p7w5-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/apk-p7w5.sha256 b/docs/archive/notes/p7/device-window-1/W5-verify/apk-p7w5.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/apk-p7w5.sha256 rename to docs/archive/notes/p7/device-window-1/W5-verify/apk-p7w5.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/dump-inproc-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/dump-inproc-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/fif8-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/fif8-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/fif8-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/fif8-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/fif8-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/fif8-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/fif8-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-cold-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-cold-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-cold-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-cold-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-lock-warm-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-lock-warm-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/inproc-warm-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/inproc-warm-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/regress.log b/docs/archive/notes/p7/device-window-1/W5-verify/regress.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/regress.log rename to docs/archive/notes/p7/device-window-1/W5-verify/regress.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-cold-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-cold-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-lock-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-lock-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-1.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-1.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-1.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-1.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-2.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-2.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-2.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-2.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-3.log b/docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-3.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W5-verify/spawn-warm-3.log rename to docs/archive/notes/p7/device-window-1/W5-verify/spawn-warm-3.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/README.md b/docs/archive/notes/p7/device-window-1/W6-verify/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/README.md rename to docs/archive/notes/p7/device-window-1/W6-verify/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/apk-install.txt b/docs/archive/notes/p7/device-window-1/W6-verify/apk-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/apk-install.txt rename to docs/archive/notes/p7/device-window-1/W6-verify/apk-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/apk-p7w6.sha256 b/docs/archive/notes/p7/device-window-1/W6-verify/apk-p7w6.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/apk-p7w6.sha256 rename to docs/archive/notes/p7/device-window-1/W6-verify/apk-p7w6.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-actual.sha256 b/docs/archive/notes/p7/device-window-1/W6-verify/bsl-actual.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-actual.sha256 rename to docs/archive/notes/p7/device-window-1/W6-verify/bsl-actual.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-inproc-summary.txt b/docs/archive/notes/p7/device-window-1/W6-verify/bsl-inproc-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-inproc-summary.txt rename to docs/archive/notes/p7/device-window-1/W6-verify/bsl-inproc-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-spawn-summary.txt b/docs/archive/notes/p7/device-window-1/W6-verify/bsl-spawn-summary.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/W6-verify/bsl-spawn-summary.txt rename to docs/archive/notes/p7/device-window-1/W6-verify/bsl-spawn-summary.txt diff --git a/docs/Disaggregated/notes/p7/device-window-1/X1-verify/README.md b/docs/archive/notes/p7/device-window-1/X1-verify/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/X1-verify/README.md rename to docs/archive/notes/p7/device-window-1/X1-verify/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-1/X1-verify/X1-dv-inproc.log b/docs/archive/notes/p7/device-window-1/X1-verify/X1-dv-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/X1-verify/X1-dv-inproc.log rename to docs/archive/notes/p7/device-window-1/X1-verify/X1-dv-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-1/X1-verify/X1-gles-inproc.log b/docs/archive/notes/p7/device-window-1/X1-verify/X1-gles-inproc.log similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-1/X1-verify/X1-gles-inproc.log rename to docs/archive/notes/p7/device-window-1/X1-verify/X1-gles-inproc.log diff --git a/docs/Disaggregated/notes/p7/device-window-2/README.md b/docs/archive/notes/p7/device-window-2/README.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/README.md rename to docs/archive/notes/p7/device-window-2/README.md diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/apk.sha256 b/docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/apk.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/apk.sha256 rename to docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/apk.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/host.sha256 b/docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/host.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/host.sha256 rename to docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/host.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/lib.sha256 b/docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/lib.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/lib.sha256 rename to docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/lib.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/timing.tsv b/docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/timing.tsv similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/timing.tsv rename to docs/archive/notes/p7/device-window-2/dry-run/build-p7w7dry-14e1c8b9/timing.tsv diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6-b-bsl/verdict.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6-b-bsl/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6-b-bsl/verdict.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6-b-bsl/verdict.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6-c-cts-ssbo-dsa/verdict.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6-c-cts-ssbo-dsa/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6-c-cts-ssbo-dsa/verdict.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6-c-cts-ssbo-dsa/verdict.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/apk-install.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/apk-install.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/apk-install.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/apk-install.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/apk-on-device.sha256 b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/apk-on-device.sha256 similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/apk-on-device.sha256 rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/apk-on-device.sha256 diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/cts-IDENTITY.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/cts-IDENTITY.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/cts-IDENTITY.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/cts-IDENTITY.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/cts-arm-proof.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/cts-arm-proof.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/cts-arm-proof.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/cts-arm-proof.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/gate3-progress.tsv b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/gate3-progress.tsv similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/gate3-progress.tsv rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/gate3-progress.tsv diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/session-found.env b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/session-found.env similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/session-found.env rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/session-found.env diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/session-restored.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/session-restored.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/session-restored.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/session-restored.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/timing.tsv b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/timing.tsv similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/timing.tsv rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/timing.tsv diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/verdict.txt b/docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/dry-p7w6/verdict.txt rename to docs/archive/notes/p7/device-window-2/dry-run/dry-p7w6/verdict.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/IDENTITY.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/IDENTITY.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/IDENTITY.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/IDENTITY.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/arm-proof.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/arm-proof.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/arm-proof.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/arm-proof.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/attribution.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/attribution.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/attribution.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/attribution.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-dsa.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-dsa.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-dsa.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-dsa.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-packed-pixels.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-packed-pixels.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-packed-pixels.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-packed-pixels.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-shader-image.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-shader-image.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-shader-image.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-shader-image.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-ssbo.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-ssbo.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-ssbo.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-ssbo.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-texture.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-texture.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-texture.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/report-texture.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-dsa-crashed.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-dsa-crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-dsa-crashed.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-dsa-crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-shader-image-crashed.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-shader-image-crashed.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-shader-image-crashed.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/runs-shader-image-crashed.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-codex-ruling.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-codex-ruling.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-codex-ruling.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-codex-ruling.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-contract.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-contract.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-contract.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict-contract.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict.txt b/docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict.txt rename to docs/archive/notes/p7/device-window-2/dry-run/pre-14e1c8b9-cts/verdict.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/final-p7w8/timing.tsv b/docs/archive/notes/p7/device-window-2/final-p7w8/timing.tsv similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/final-p7w8/timing.tsv rename to docs/archive/notes/p7/device-window-2/final-p7w8/timing.tsv diff --git a/docs/Disaggregated/notes/p7/device-window-2/final-p7w8/verdict.json b/docs/archive/notes/p7/device-window-2/final-p7w8/verdict.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/final-p7w8/verdict.json rename to docs/archive/notes/p7/device-window-2/final-p7w8/verdict.json diff --git a/docs/Disaggregated/notes/p7/device-window-2/final-p7w8/verdict.txt b/docs/archive/notes/p7/device-window-2/final-p7w8/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/final-p7w8/verdict.txt rename to docs/archive/notes/p7/device-window-2/final-p7w8/verdict.txt diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/10-build.sh b/docs/archive/notes/p7/device-window-2/tools/10-build.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/10-build.sh rename to docs/archive/notes/p7/device-window-2/tools/10-build.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/20-install.sh b/docs/archive/notes/p7/device-window-2/tools/20-install.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/20-install.sh rename to docs/archive/notes/p7/device-window-2/tools/20-install.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/21-preflight.sh b/docs/archive/notes/p7/device-window-2/tools/21-preflight.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/21-preflight.sh rename to docs/archive/notes/p7/device-window-2/tools/21-preflight.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/30-gate3-selftest.sh b/docs/archive/notes/p7/device-window-2/tools/30-gate3-selftest.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/30-gate3-selftest.sh rename to docs/archive/notes/p7/device-window-2/tools/30-gate3-selftest.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/30-gate3.sh b/docs/archive/notes/p7/device-window-2/tools/30-gate3.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/30-gate3.sh rename to docs/archive/notes/p7/device-window-2/tools/30-gate3.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/40-bsl-stats.sh b/docs/archive/notes/p7/device-window-2/tools/40-bsl-stats.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/40-bsl-stats.sh rename to docs/archive/notes/p7/device-window-2/tools/40-bsl-stats.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/50-cts-after.sh b/docs/archive/notes/p7/device-window-2/tools/50-cts-after.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/50-cts-after.sh rename to docs/archive/notes/p7/device-window-2/tools/50-cts-after.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce-selftest-pre14e1c8b9.json b/docs/archive/notes/p7/device-window-2/tools/60-reduce-selftest-pre14e1c8b9.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce-selftest-pre14e1c8b9.json rename to docs/archive/notes/p7/device-window-2/tools/60-reduce-selftest-pre14e1c8b9.json diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce-selftest.py b/docs/archive/notes/p7/device-window-2/tools/60-reduce-selftest.py similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce-selftest.py rename to docs/archive/notes/p7/device-window-2/tools/60-reduce-selftest.py diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce.py b/docs/archive/notes/p7/device-window-2/tools/60-reduce.py similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/60-reduce.py rename to docs/archive/notes/p7/device-window-2/tools/60-reduce.py diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/90-restore.sh b/docs/archive/notes/p7/device-window-2/tools/90-restore.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/90-restore.sh rename to docs/archive/notes/p7/device-window-2/tools/90-restore.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/RUNBOOK.md b/docs/archive/notes/p7/device-window-2/tools/RUNBOOK.md similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/RUNBOOK.md rename to docs/archive/notes/p7/device-window-2/tools/RUNBOOK.md diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/detach.sh b/docs/archive/notes/p7/device-window-2/tools/detach.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/detach.sh rename to docs/archive/notes/p7/device-window-2/tools/detach.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/dry-run-p7w6.sh b/docs/archive/notes/p7/device-window-2/tools/dry-run-p7w6.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/dry-run-p7w6.sh rename to docs/archive/notes/p7/device-window-2/tools/dry-run-p7w6.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/lib.sh b/docs/archive/notes/p7/device-window-2/tools/lib.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/lib.sh rename to docs/archive/notes/p7/device-window-2/tools/lib.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/tools/window.sh b/docs/archive/notes/p7/device-window-2/tools/window.sh similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/tools/window.sh rename to docs/archive/notes/p7/device-window-2/tools/window.sh diff --git a/docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/timing.tsv b/docs/archive/notes/p7/device-window-2/window2-p7w7/timing.tsv similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/timing.tsv rename to docs/archive/notes/p7/device-window-2/window2-p7w7/timing.tsv diff --git a/docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/verdict.json b/docs/archive/notes/p7/device-window-2/window2-p7w7/verdict.json similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/verdict.json rename to docs/archive/notes/p7/device-window-2/window2-p7w7/verdict.json diff --git a/docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/verdict.txt b/docs/archive/notes/p7/device-window-2/window2-p7w7/verdict.txt similarity index 100% rename from docs/Disaggregated/notes/p7/device-window-2/window2-p7w7/verdict.txt rename to docs/archive/notes/p7/device-window-2/window2-p7w7/verdict.txt diff --git a/docs/Disaggregated/notes/p7/f1-caps-placeholder.md b/docs/archive/notes/p7/f1-caps-placeholder.md similarity index 100% rename from docs/Disaggregated/notes/p7/f1-caps-placeholder.md rename to docs/archive/notes/p7/f1-caps-placeholder.md diff --git a/docs/Disaggregated/notes/p7/g5-msrbo.md b/docs/archive/notes/p7/g5-msrbo.md similarity index 98% rename from docs/Disaggregated/notes/p7/g5-msrbo.md rename to docs/archive/notes/p7/g5-msrbo.md index d001c89d..5cc69c39 100644 --- a/docs/Disaggregated/notes/p7/g5-msrbo.md +++ b/docs/archive/notes/p7/g5-msrbo.md @@ -1,6 +1,6 @@ # P7 门 5 包 g5-msrbo:`KHR-GL46.direct_state_access.renderbuffers_storage_multisample`(inproc × DirectVulkan) -> 规范见 [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §7.3(门 5)与 §12(记录债)。 +> 规范见 [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §7.3(门 5)与 §12(记录债)。 > 基线 = `p7/f2` 的 `f90afcd1`(pipe 头 `14e1c8b9` + 已审的四条 F2 提交)。分支 `p7/g5-msrbo`。 ## 1. 根因(真机证明) diff --git a/docs/Disaggregated/notes/p7/iris-census-1135c664.md b/docs/archive/notes/p7/iris-census-1135c664.md similarity index 98% rename from docs/Disaggregated/notes/p7/iris-census-1135c664.md rename to docs/archive/notes/p7/iris-census-1135c664.md index 089f7324..1c2e780d 100644 --- a/docs/Disaggregated/notes/p7/iris-census-1135c664.md +++ b/docs/archive/notes/p7/iris-census-1135c664.md @@ -1,9 +1,9 @@ # Iris trace 普查 @ `3c80cd62`(P7 wave 3 包 E1,主机 lavapipe) > 计划:[`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) §1.2 的「门:每一个 Iris trace」行与 §3 wave 3 的「Iris trace 普查 + P9 例外表」; -> [`ROADMAP.md`](../../ROADMAP.md) P3b/P4b 行门列「每一个 Iris trace(欠当前头的结果与 `texture-remint-pull` 的 P9 例外表)」; -> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §11「Iris 普查的 P9 例外」。 -> 同包的另一半(`MEASUREMENTS.md` §7.2 同名重跑)写在 [`MEASUREMENTS.md`](../../MEASUREMENTS.md) §7.2 的 P7 小节。 +> [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md) P3b/P4b 行门列「每一个 Iris trace(欠当前头的结果与 `texture-remint-pull` 的 P9 例外表)」; +> [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §11「Iris 普查的 P9 例外」。 +> 同包的另一半(`MEASUREMENTS.md` §7.2 同名重跑)写在 [`MEASUREMENTS.md`](../../../Disaggregated/MEASUREMENTS.md) §7.2 的 P7 小节。 > > 树 `~/w7/p7-census-e1`,分支 `p7/census-e1`,基线 `3c80cd62`(`origin/feat/disaggregated` 头,含 B3)。 > `build-split` = Release / clang / ccache / `MOBILEGL_BUILD_DISAGGREGATED=ON` `_INPROC=ON` `MOBILEGL_PIPE_PUSH=ON` diff --git a/docs/Disaggregated/notes/p7/link-ratchet.md b/docs/archive/notes/p7/link-ratchet.md similarity index 100% rename from docs/Disaggregated/notes/p7/link-ratchet.md rename to docs/archive/notes/p7/link-ratchet.md diff --git a/docs/Disaggregated/notes/p7/magma-a.md b/docs/archive/notes/p7/magma-a.md similarity index 100% rename from docs/Disaggregated/notes/p7/magma-a.md rename to docs/archive/notes/p7/magma-a.md diff --git a/docs/Disaggregated/notes/p7/magma-b.md b/docs/archive/notes/p7/magma-b.md similarity index 99% rename from docs/Disaggregated/notes/p7/magma-b.md rename to docs/archive/notes/p7/magma-b.md index 1d6c6a70..417a8daf 100644 --- a/docs/Disaggregated/notes/p7/magma-b.md +++ b/docs/archive/notes/p7/magma-b.md @@ -1,7 +1,7 @@ # P7 wave 2-B:Magma blit / copy / mip 簇(分支 `p7/magma-b`) > 计划见 [`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) §1.3 与 §3 wave 2-B;规范见 -> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §0(规则 I / J)、§3.2(退役 vs +> [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §0(规则 I / J)、§3.2(退役 vs > decline 表)、§5.1 / §5.2。基线 = `feat/disaggregated` 上 `~/w7/pipe` 的头 `801f8eda` > (wave 0 已落地:Magma 两进程三臂、`MGPipeSessionFailHook` → `Session::Fail` 漏斗、 > `scripts/link_ratchet.py`)。 diff --git a/docs/Disaggregated/notes/p7/magma-b2.md b/docs/archive/notes/p7/magma-b2.md similarity index 99% rename from docs/Disaggregated/notes/p7/magma-b2.md rename to docs/archive/notes/p7/magma-b2.md index 645c6b82..453eb753 100644 --- a/docs/Disaggregated/notes/p7/magma-b2.md +++ b/docs/archive/notes/p7/magma-b2.md @@ -1,6 +1,6 @@ # P7 wave 2-B2:Magma blit / copy / mip 簇里包 B 没有走完的部分(分支 `p7/magma-b2`) -> 规范见 [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §0(规则 I / J)、 +> 规范见 [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §0(规则 I / J)、 > §3.2(`multisample-blit-shape` / `-aspect` 行)、§4.2(棘轮目标与 (B′) 路线)、§5.2; > 前一包见 [`magma-b.md`](magma-b.md)。基线 = `feat/disaggregated` 上 `~/w7/pipe` 的头 > `09ba88e7`(X1、F1、C、A、B 全部落地)。 diff --git a/docs/Disaggregated/notes/p7/magma-b3.md b/docs/archive/notes/p7/magma-b3.md similarity index 99% rename from docs/Disaggregated/notes/p7/magma-b3.md rename to docs/archive/notes/p7/magma-b3.md index 06a1f9ba..9a577216 100644 --- a/docs/Disaggregated/notes/p7/magma-b3.md +++ b/docs/archive/notes/p7/magma-b3.md @@ -1,7 +1,7 @@ # P7 wave 2-B3:Magma wire 臂的「已完成帧序号地板」不可证(分支 `p7/magma-b3`) > 计划见 [`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) §3 wave 2;规范见 -> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §0(规则 I / J)、§3.2、§7、§9; +> [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §0(规则 I / J)、§3.2、§7、§9; > 裁定 ID-P7-14 / 19 / 20 / 21 / 23。基线 = `feat/disaggregated` 上 `~/w7/pipe` 的头 `ae3f43ab`。 > 本文所有 `file:line` 均在该提交上读取。 > diff --git a/docs/Disaggregated/notes/p7/magma-b4.md b/docs/archive/notes/p7/magma-b4.md similarity index 100% rename from docs/Disaggregated/notes/p7/magma-b4.md rename to docs/archive/notes/p7/magma-b4.md diff --git a/docs/Disaggregated/notes/p7/magma-c.md b/docs/archive/notes/p7/magma-c.md similarity index 100% rename from docs/Disaggregated/notes/p7/magma-c.md rename to docs/archive/notes/p7/magma-c.md diff --git a/docs/Disaggregated/notes/p7/magma-m2.md b/docs/archive/notes/p7/magma-m2.md similarity index 99% rename from docs/Disaggregated/notes/p7/magma-m2.md rename to docs/archive/notes/p7/magma-m2.md index 15c9285f..ce7c7ea5 100755 --- a/docs/Disaggregated/notes/p7/magma-m2.md +++ b/docs/archive/notes/p7/magma-m2.md @@ -2,7 +2,7 @@ > 裁定见 [`INTEGRATOR-DECISIONS-P7.md`](INTEGRATOR-DECISIONS-P7.md) ID-P7-27 / ID-P7-32(M1 的归因与 > 「server 侧回收不能假设一帧有界」);规范见 -> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §0(规则 I / J)、§7.1 门 3、§9、 +> [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §0(规则 I / J)、§7.1 门 3、§9、 > §12 的 bsl-esc-menu 行。基线 = `ec46a550`(`build-split` / lavapipe 钉住 / 集成测试 ON)。 > > 主机口径:WSL Arch + lavapipe(`/usr/share/vulkan/icd.d/lvp_icd.json`),`build-split` = Release / diff --git a/docs/Disaggregated/notes/p7/magma-m3.md b/docs/archive/notes/p7/magma-m3.md similarity index 100% rename from docs/Disaggregated/notes/p7/magma-m3.md rename to docs/archive/notes/p7/magma-m3.md diff --git a/docs/Disaggregated/notes/p7/magma-two-process-first-run.md b/docs/archive/notes/p7/magma-two-process-first-run.md similarity index 100% rename from docs/Disaggregated/notes/p7/magma-two-process-first-run.md rename to docs/archive/notes/p7/magma-two-process-first-run.md diff --git a/docs/Disaggregated/notes/p7/ph-f.md b/docs/archive/notes/p7/ph-f.md similarity index 99% rename from docs/Disaggregated/notes/p7/ph-f.md rename to docs/archive/notes/p7/ph-f.md index 76c643f2..93c13a10 100644 --- a/docs/Disaggregated/notes/p7/ph-f.md +++ b/docs/archive/notes/p7/ph-f.md @@ -2,7 +2,7 @@ > 计划见 [`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) §1.1(PH-7、PH-8、D11、门行)与 §3 wave 2-F; > 裁定见 [`INTEGRATOR-DECISIONS-P7.md`](INTEGRATOR-DECISIONS-P7.md) ID-P7-3(令牌足够、不做 TLS、 -> `Welcome.dataNonce`);规范见 [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §0 +> `Welcome.dataNonce`);规范见 [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §0 > 规则 I / J、§9 簇 F、§10 第 3 条。基线 `ec46a550`。 > > 主机口径:WSL Arch + lavapipe,`build-split` 与集成者同配置(integration tests ON)。flatc 取 diff --git a/docs/Disaggregated/notes/p7/verify-split.md b/docs/archive/notes/p7/verify-split.md similarity index 99% rename from docs/Disaggregated/notes/p7/verify-split.md rename to docs/archive/notes/p7/verify-split.md index ec9a9358..1a0b2c38 100644 --- a/docs/Disaggregated/notes/p7/verify-split.md +++ b/docs/archive/notes/p7/verify-split.md @@ -1,7 +1,7 @@ # P7 wave 3 · V1:出口门 2 —— verify × split(分支 `p7/verify-split`) > 计划见 [`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) 「wave 3」与 §4 分母第 (7) 项;规范见 -> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §6(门 2)、§0(规则 I / J)、§9。 +> [`CONTRACT-P7.md`](../../contracts/CONTRACT-P7.md) §6(门 2)、§0(规则 I / J)、§9。 > 基线 = `3c2867d3`。 > > 主机口径:WSL Arch + lavapipe(`/usr/share/vulkan/icd.d/lvp_icd.json`,钉在 `MOBILEGL_ITEST_VK_ICD`), diff --git a/docs/Disaggregated/notes/p7/x1-persistent-map-segv.md b/docs/archive/notes/p7/x1-persistent-map-segv.md similarity index 100% rename from docs/Disaggregated/notes/p7/x1-persistent-map-segv.md rename to docs/archive/notes/p7/x1-persistent-map-segv.md diff --git a/docs/Disaggregated/notes/p7/x2-caps-flake.md b/docs/archive/notes/p7/x2-caps-flake.md similarity index 100% rename from docs/Disaggregated/notes/p7/x2-caps-flake.md rename to docs/archive/notes/p7/x2-caps-flake.md diff --git a/docs/Disaggregated/notes/p8/A.md b/docs/archive/notes/p8/A.md similarity index 100% rename from docs/Disaggregated/notes/p8/A.md rename to docs/archive/notes/p8/A.md diff --git a/docs/Disaggregated/notes/p8/B.md b/docs/archive/notes/p8/B.md similarity index 100% rename from docs/Disaggregated/notes/p8/B.md rename to docs/archive/notes/p8/B.md diff --git a/docs/Disaggregated/notes/p8/C.md b/docs/archive/notes/p8/C.md similarity index 100% rename from docs/Disaggregated/notes/p8/C.md rename to docs/archive/notes/p8/C.md diff --git a/docs/Disaggregated/notes/p8/D.md b/docs/archive/notes/p8/D.md similarity index 100% rename from docs/Disaggregated/notes/p8/D.md rename to docs/archive/notes/p8/D.md diff --git a/docs/Disaggregated/notes/p8/E.md b/docs/archive/notes/p8/E.md similarity index 100% rename from docs/Disaggregated/notes/p8/E.md rename to docs/archive/notes/p8/E.md diff --git a/docs/Disaggregated/notes/p8/F.md b/docs/archive/notes/p8/F.md similarity index 100% rename from docs/Disaggregated/notes/p8/F.md rename to docs/archive/notes/p8/F.md diff --git a/docs/Disaggregated/notes/p8/INTEGRATOR-DECISIONS-P8.md b/docs/archive/notes/p8/INTEGRATOR-DECISIONS-P8.md similarity index 100% rename from docs/Disaggregated/notes/p8/INTEGRATOR-DECISIONS-P8.md rename to docs/archive/notes/p8/INTEGRATOR-DECISIONS-P8.md diff --git a/docs/Disaggregated/notes/p8/MF.md b/docs/archive/notes/p8/MF.md similarity index 100% rename from docs/Disaggregated/notes/p8/MF.md rename to docs/archive/notes/p8/MF.md diff --git a/docs/Disaggregated/notes/p8/PLAN-P8.md b/docs/archive/notes/p8/PLAN-P8.md similarity index 100% rename from docs/Disaggregated/notes/p8/PLAN-P8.md rename to docs/archive/notes/p8/PLAN-P8.md diff --git a/docs/Disaggregated/notes/p8/README.md b/docs/archive/notes/p8/README.md similarity index 100% rename from docs/Disaggregated/notes/p8/README.md rename to docs/archive/notes/p8/README.md diff --git a/docs/Disaggregated/notes/p8/S.md b/docs/archive/notes/p8/S.md similarity index 100% rename from docs/Disaggregated/notes/p8/S.md rename to docs/archive/notes/p8/S.md diff --git a/docs/Disaggregated/notes/p8/SE.md b/docs/archive/notes/p8/SE.md similarity index 100% rename from docs/Disaggregated/notes/p8/SE.md rename to docs/archive/notes/p8/SE.md diff --git a/docs/Disaggregated/notes/p8/SV.md b/docs/archive/notes/p8/SV.md similarity index 100% rename from docs/Disaggregated/notes/p8/SV.md rename to docs/archive/notes/p8/SV.md diff --git a/docs/Disaggregated/notes/p9/HANDOFF-P9.md b/docs/archive/notes/p9/HANDOFF-P9.md similarity index 100% rename from docs/Disaggregated/notes/p9/HANDOFF-P9.md rename to docs/archive/notes/p9/HANDOFF-P9.md diff --git a/docs/Disaggregated/notes/p9/INTEGRATOR-DECISIONS-P9.md b/docs/archive/notes/p9/INTEGRATOR-DECISIONS-P9.md similarity index 100% rename from docs/Disaggregated/notes/p9/INTEGRATOR-DECISIONS-P9.md rename to docs/archive/notes/p9/INTEGRATOR-DECISIONS-P9.md diff --git a/docs/Disaggregated/notes/p9/README.md b/docs/archive/notes/p9/README.md similarity index 95% rename from docs/Disaggregated/notes/p9/README.md rename to docs/archive/notes/p9/README.md index 9c611631..b23cd5e0 100644 --- a/docs/Disaggregated/notes/p9/README.md +++ b/docs/archive/notes/p9/README.md @@ -12,7 +12,7 @@ > > 门(集成头):G1 符号增 0 减 0、`.text` 0xa52203;fatal census 79、link ratchet 171;unit、split / spawn / tcp、三条 Magma 双进程车道、integration-gpu 两臂全绿(数字见 ID-P9-12);verify 构建三车道全绿;主机 retrace 230 / 236(6 项为宿主 llvmpipe JIT 崩溃,monolith 同挂)。未做真机。 > -> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 `ROADMAP.md` 移入,原文照录)。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。 +> 下面是该阶段在路线图上的原始范围与出口门(2026-09-24 从 `ROADMAP.md` 移入,原文照录)。本页保存该阶段在路线图上的完整范围与出口门(2026-09-24 从 [`ROADMAP.md`](../../../Disaggregated/ROADMAP.md) 阶段表移入,原文照录);阶段开工后,计划、裁定与报告都放在本目录。 ## 摘要 diff --git a/docs/Disaggregated/notes/p9/W1-PACK-BUFFER-READBACK.md b/docs/archive/notes/p9/W1-PACK-BUFFER-READBACK.md similarity index 100% rename from docs/Disaggregated/notes/p9/W1-PACK-BUFFER-READBACK.md rename to docs/archive/notes/p9/W1-PACK-BUFFER-READBACK.md diff --git a/docs/Disaggregated/notes/p9/W2-REMINT.md b/docs/archive/notes/p9/W2-REMINT.md similarity index 100% rename from docs/Disaggregated/notes/p9/W2-REMINT.md rename to docs/archive/notes/p9/W2-REMINT.md diff --git a/docs/Disaggregated/notes/perf-five-arm-20260928/README.md b/docs/archive/notes/perf-five-arm-20260928/README.md similarity index 100% rename from docs/Disaggregated/notes/perf-five-arm-20260928/README.md rename to docs/archive/notes/perf-five-arm-20260928/README.md diff --git a/docs/Disaggregated/notes/perf-p14/BENCH.md b/docs/archive/notes/perf-p14/BENCH.md similarity index 100% rename from docs/Disaggregated/notes/perf-p14/BENCH.md rename to docs/archive/notes/perf-p14/BENCH.md diff --git a/docs/Disaggregated/notes/perf-p14/ESTIMATE.md b/docs/archive/notes/perf-p14/ESTIMATE.md similarity index 100% rename from docs/Disaggregated/notes/perf-p14/ESTIMATE.md rename to docs/archive/notes/perf-p14/ESTIMATE.md diff --git a/docs/Disaggregated/notes/perf-p14/HANDOFF.md b/docs/archive/notes/perf-p14/HANDOFF.md similarity index 100% rename from docs/Disaggregated/notes/perf-p14/HANDOFF.md rename to docs/archive/notes/perf-p14/HANDOFF.md diff --git a/docs/Disaggregated/notes/perf-p14/NEXT-draw-packet-cache.md b/docs/archive/notes/perf-p14/NEXT-draw-packet-cache.md similarity index 100% rename from docs/Disaggregated/notes/perf-p14/NEXT-draw-packet-cache.md rename to docs/archive/notes/perf-p14/NEXT-draw-packet-cache.md diff --git a/docs/Disaggregated/notes/perf-p14/README.md b/docs/archive/notes/perf-p14/README.md similarity index 100% rename from docs/Disaggregated/notes/perf-p14/README.md rename to docs/archive/notes/perf-p14/README.md diff --git a/docs/Disaggregated/notes/perf-p15/DIRTY-MASK-PLAN.md b/docs/archive/notes/perf-p15/DIRTY-MASK-PLAN.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/DIRTY-MASK-PLAN.md rename to docs/archive/notes/perf-p15/DIRTY-MASK-PLAN.md diff --git a/docs/Disaggregated/notes/perf-p15/HANDOFF.md b/docs/archive/notes/perf-p15/HANDOFF.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/HANDOFF.md rename to docs/archive/notes/perf-p15/HANDOFF.md diff --git a/docs/Disaggregated/notes/perf-p15/MONOLITH-DIFF.md b/docs/archive/notes/perf-p15/MONOLITH-DIFF.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/MONOLITH-DIFF.md rename to docs/archive/notes/perf-p15/MONOLITH-DIFF.md diff --git a/docs/Disaggregated/notes/perf-p15/PARITY-AUDIT.md b/docs/archive/notes/perf-p15/PARITY-AUDIT.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/PARITY-AUDIT.md rename to docs/archive/notes/perf-p15/PARITY-AUDIT.md diff --git a/docs/Disaggregated/notes/perf-p15/PARITY-SEED.md b/docs/archive/notes/perf-p15/PARITY-SEED.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/PARITY-SEED.md rename to docs/archive/notes/perf-p15/PARITY-SEED.md diff --git a/docs/Disaggregated/notes/perf-p15/PLAN-P15.md b/docs/archive/notes/perf-p15/PLAN-P15.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/PLAN-P15.md rename to docs/archive/notes/perf-p15/PLAN-P15.md diff --git a/docs/Disaggregated/notes/perf-p15/PRESENT-WAIT.md b/docs/archive/notes/perf-p15/PRESENT-WAIT.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/PRESENT-WAIT.md rename to docs/archive/notes/perf-p15/PRESENT-WAIT.md diff --git a/docs/Disaggregated/notes/perf-p15/SCOREBOARD.md b/docs/archive/notes/perf-p15/SCOREBOARD.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/SCOREBOARD.md rename to docs/archive/notes/perf-p15/SCOREBOARD.md diff --git a/docs/Disaggregated/notes/perf-p15/WAIT-AUDIT.md b/docs/archive/notes/perf-p15/WAIT-AUDIT.md similarity index 100% rename from docs/Disaggregated/notes/perf-p15/WAIT-AUDIT.md rename to docs/archive/notes/perf-p15/WAIT-AUDIT.md diff --git a/docs/Disaggregated/notes/recovered/wf1/final/part1.md b/docs/archive/notes/recovered/wf1/final/part1.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf1/final/part1.md rename to docs/archive/notes/recovered/wf1/final/part1.md diff --git a/docs/Disaggregated/notes/recovered/wf1/final/part2.md b/docs/archive/notes/recovered/wf1/final/part2.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf1/final/part2.md rename to docs/archive/notes/recovered/wf1/final/part2.md diff --git a/docs/Disaggregated/notes/recovered/wf1/final/part3.md b/docs/archive/notes/recovered/wf1/final/part3.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf1/final/part3.md rename to docs/archive/notes/recovered/wf1/final/part3.md diff --git a/docs/Disaggregated/notes/recovered/wf1/final/part4.md b/docs/archive/notes/recovered/wf1/final/part4.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf1/final/part4.md rename to docs/archive/notes/recovered/wf1/final/part4.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/part1.md b/docs/archive/notes/recovered/wf2/final/part1.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/part1.md rename to docs/archive/notes/recovered/wf2/final/part1.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/part2.md b/docs/archive/notes/recovered/wf2/final/part2.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/part2.md rename to docs/archive/notes/recovered/wf2/final/part2.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/part3.md b/docs/archive/notes/recovered/wf2/final/part3.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/part3.md rename to docs/archive/notes/recovered/wf2/final/part3.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/part4.md b/docs/archive/notes/recovered/wf2/final/part4.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/part4.md rename to docs/archive/notes/recovered/wf2/final/part4.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/synth-part1.md b/docs/archive/notes/recovered/wf2/final/synth-part1.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/synth-part1.md rename to docs/archive/notes/recovered/wf2/final/synth-part1.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/synth-part2a.md b/docs/archive/notes/recovered/wf2/final/synth-part2a.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/synth-part2a.md rename to docs/archive/notes/recovered/wf2/final/synth-part2a.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/synth-part2b.md b/docs/archive/notes/recovered/wf2/final/synth-part2b.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/synth-part2b.md rename to docs/archive/notes/recovered/wf2/final/synth-part2b.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/synth-part3.md b/docs/archive/notes/recovered/wf2/final/synth-part3.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/synth-part3.md rename to docs/archive/notes/recovered/wf2/final/synth-part3.md diff --git a/docs/Disaggregated/notes/recovered/wf2/final/synth-part4.md b/docs/archive/notes/recovered/wf2/final/synth-part4.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/final/synth-part4.md rename to docs/archive/notes/recovered/wf2/final/synth-part4.md diff --git a/docs/Disaggregated/notes/recovered/wf2/p0-pipe-skeleton/citations-selftest.md b/docs/archive/notes/recovered/wf2/p0-pipe-skeleton/citations-selftest.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/p0-pipe-skeleton/citations-selftest.md rename to docs/archive/notes/recovered/wf2/p0-pipe-skeleton/citations-selftest.md diff --git a/docs/Disaggregated/notes/recovered/wf2/p0-polish-findings.md b/docs/archive/notes/recovered/wf2/p0-polish-findings.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf2/p0-polish-findings.md rename to docs/archive/notes/recovered/wf2/p0-polish-findings.md diff --git a/docs/Disaggregated/notes/recovered/wf3/scout-docs-spec.md b/docs/archive/notes/recovered/wf3/scout-docs-spec.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf3/scout-docs-spec.md rename to docs/archive/notes/recovered/wf3/scout-docs-spec.md diff --git a/docs/Disaggregated/notes/recovered/wf3/scout-include-gate.md b/docs/archive/notes/recovered/wf3/scout-include-gate.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf3/scout-include-gate.md rename to docs/archive/notes/recovered/wf3/scout-include-gate.md diff --git a/docs/Disaggregated/notes/recovered/wf3/scout-program-artifacts.md b/docs/archive/notes/recovered/wf3/scout-program-artifacts.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf3/scout-program-artifacts.md rename to docs/archive/notes/recovered/wf3/scout-program-artifacts.md diff --git a/docs/Disaggregated/notes/recovered/wf3/scout-value-types.md b/docs/archive/notes/recovered/wf3/scout-value-types.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf3/scout-value-types.md rename to docs/archive/notes/recovered/wf3/scout-value-types.md diff --git a/docs/Disaggregated/notes/recovered/wf4/BRIEF-P1.part1.md b/docs/archive/notes/recovered/wf4/BRIEF-P1.part1.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/BRIEF-P1.part1.md rename to docs/archive/notes/recovered/wf4/BRIEF-P1.part1.md diff --git a/docs/Disaggregated/notes/recovered/wf4/part1.md b/docs/archive/notes/recovered/wf4/part1.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/part1.md rename to docs/archive/notes/recovered/wf4/part1.md diff --git a/docs/Disaggregated/notes/recovered/wf4/part2.md b/docs/archive/notes/recovered/wf4/part2.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/part2.md rename to docs/archive/notes/recovered/wf4/part2.md diff --git a/docs/Disaggregated/notes/recovered/wf4/part3.md b/docs/archive/notes/recovered/wf4/part3.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/part3.md rename to docs/archive/notes/recovered/wf4/part3.md diff --git a/docs/Disaggregated/notes/recovered/wf4/scout-docs-spec.md b/docs/archive/notes/recovered/wf4/scout-docs-spec.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/scout-docs-spec.md rename to docs/archive/notes/recovered/wf4/scout-docs-spec.md diff --git a/docs/Disaggregated/notes/recovered/wf4/scout-generated-and-config.md b/docs/archive/notes/recovered/wf4/scout-generated-and-config.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/scout-generated-and-config.md rename to docs/archive/notes/recovered/wf4/scout-generated-and-config.md diff --git a/docs/Disaggregated/notes/recovered/wf4/scout-test-infra.md b/docs/archive/notes/recovered/wf4/scout-test-infra.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf4/scout-test-infra.md rename to docs/archive/notes/recovered/wf4/scout-test-infra.md diff --git a/docs/Disaggregated/notes/recovered/wf5/.partC.md b/docs/archive/notes/recovered/wf5/.partC.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf5/.partC.md rename to docs/archive/notes/recovered/wf5/.partC.md diff --git a/docs/Disaggregated/notes/recovered/wf5/.partD.md b/docs/archive/notes/recovered/wf5/.partD.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf5/.partD.md rename to docs/archive/notes/recovered/wf5/.partD.md diff --git a/docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.full.md b/docs/archive/notes/recovered/wf5/BRIEF-P2.full.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.full.md rename to docs/archive/notes/recovered/wf5/BRIEF-P2.full.md diff --git a/docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.md b/docs/archive/notes/recovered/wf5/BRIEF-P2.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.md rename to docs/archive/notes/recovered/wf5/BRIEF-P2.md diff --git a/docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.replayed.md b/docs/archive/notes/recovered/wf5/BRIEF-P2.replayed.md similarity index 100% rename from docs/Disaggregated/notes/recovered/wf5/BRIEF-P2.replayed.md rename to docs/archive/notes/recovered/wf5/BRIEF-P2.replayed.md diff --git a/scripts/data/split_coverage_exemptions.txt b/scripts/data/split_coverage_exemptions.txt index 88fb50f8..853f7050 100644 --- a/scripts/data/split_coverage_exemptions.txt +++ b/scripts/data/split_coverage_exemptions.txt @@ -14,7 +14,7 @@ # pending-fix red on a split arm today; the reason names the package or DEBTS.md row that # fixes it, and the row goes when the case is registered (a stale row is an error) # -# Evidence for every row: docs/Disaggregated/notes/p8/A.md (per-arm census, junit per case). +# Evidence for every row: docs/archive/notes/p8/A.md (per-arm census, junit per case). # ---- mechanism: MGL_ITEST_MONOLITH_MECHANISM_FILTER, pinned to monolith by construction ------- HandleRecycleScenario.* mechanism pointer-key ABA / slot recycling inside one process (integration-monolith-control) @@ -64,7 +64,7 @@ SpirvShaderBinaryScenario.SpecializeShaderErrorSurfaceMatchesTheExtension no-rec ProgramPipelineScenario.AReservedNameTakesStateBeforeItIsAProgramPipeline no-records a reserved pipeline name's state is client-side and draws nothing # ---- pending-fix ------------------------------------------------------------------------------- -# (none: P8-SE fixed the default-framebuffer depth/stencil case and registered it, notes/p8/SE.md) +# (none: P8-SE fixed the default-framebuffer depth/stencil case and registered it, docs/archive/notes/p8/SE.md) # These ambient copies cannot run their assertion; pinned controls are checked separately. LargeArenaAdoptionScenario.AnAdoptionCostsExactlyOneMapPersistentRoundtrip mechanism synchronous monolith accounting; required DirectGLES.MapPersistentRoundtrips control diff --git a/scripts/gen_pipe.py b/scripts/gen_pipe.py index cc758e5a..69b1d7f0 100644 --- a/scripts/gen_pipe.py +++ b/scripts/gen_pipe.py @@ -880,7 +880,7 @@ inline constexpr MGPipeCallClass MGPipeCallClassFor(MGPWireOp op) { : kCallClassCount; } -// P5e (MG_Remote/CONTRACT-P5E.md 2.2): THE WAIT CLASS OF EVERY OPCODE, indexed the same way. +// P5e (docs/archive/contracts/CONTRACT-P5E.md 2.2): THE WAIT CLASS OF EVERY OPCODE, indexed the same way. // Index 0 is kWaitClassCount - never a real class - for the flags table's reason: the one // caller that can pass an opcode this catalogue never produced is a decoder holding bytes off // a stream, and it must reach its own Fatal{ProtocolCorruption} rather than a wait decision. diff --git a/scripts/gen_pipe_field_ownership.py b/scripts/gen_pipe_field_ownership.py index 41f52313..88739613 100644 --- a/scripts/gen_pipe_field_ownership.py +++ b/scripts/gen_pipe_field_ownership.py @@ -1012,7 +1012,7 @@ def self_test(): "the field set (%d of %d)" % (total, len(accessors))) if len(sticky) != 7: sys.exit("gen_pipe_field_ownership: self-test: Coverage.def no longer has seven sticky fields") - # EIGHT SINCE P5e (MG_Remote/CONTRACT-P5E.md 5.6): GetBufferBindingPoint joined the seven + # EIGHT SINCE P5e (docs/archive/contracts/CONTRACT-P5E.md 5.6): GetBufferBindingPoint joined the seven # when set_shader_buffers got its Coverage.def emitted row. The number is pinned rather # than merely derived because it is the SIZE OF THE SHAPE-ONLY SET - the rows where an # emitted call exists and still does not supply the field - and a row that quietly left diff --git a/scripts/link_ratchet.py b/scripts/link_ratchet.py index 277da213..034d2d88 100644 --- a/scripts/link_ratchet.py +++ b/scripts/link_ratchet.py @@ -10,7 +10,7 @@ CONTRACT-P6.md 12.1 records the debt as 184 symbols and says "a ratchet recomputes the 184 in CI and asserts it only ever falls". This is that ratchet. The measurement is a6's -(docs/Disaggregated/notes/p6/a6-link-experiment.md), mechanised: +(docs/archive/notes/p6/a6-link-experiment.md), mechanised: (SERVER undefined) - (SERVER defined) - (SHARED defined) intersect (FRONTEND defined) diff --git a/scripts/p4a_untouched_regions.sh b/scripts/p4a_untouched_regions.sh index c8232811..5356e974 100644 --- a/scripts/p4a_untouched_regions.sh +++ b/scripts/p4a_untouched_regions.sh @@ -93,7 +93,7 @@ # expected shape of a #if/#else pair that re-spells one of these bodies beside an untouched copy - # a finding, not a limitation, because two ladders drift (ID-11, ID-15). # -# A SHARED TEMPLATE OVER AN ACCESSOR INTERFACE IS REJECTED (ID-13 in notes/p3a/INTEGRATOR-DECISIONS.md): it resizes +# A SHARED TEMPLATE OVER AN ACCESSOR INTERFACE IS REJECTED (ID-13 in docs/archive/notes/p3a/INTEGRATOR-DECISIONS.md): it resizes # pull symbols and breaks G1. If a P4a arm needs a variant of one of the seventeen it gets its own # `#if MOBILEGL_PIPE_PUSH` function with its own name and its own pinned sha - the # FlushPendingRangesFrom shape. diff --git a/tools/device_bench/disagg/README.md b/tools/device_bench/disagg/README.md index bccb5cc7..1c8dd698 100644 --- a/tools/device_bench/disagg/README.md +++ b/tools/device_bench/disagg/README.md @@ -82,7 +82,7 @@ FCL's Minecraft renders into the Render Server's on-screen window on the same ph `fcl_accept.sh kill` kills the server and checks the client latches DEVICE LOST and FCL survives. Needs the FCL fork's version setting "keepRunningInBackground" ON in `config.json` (FCL pauses the game the moment its Activity leaves the foreground). The server is started through -the Render Server screen's documented extras. Results: `docs/Disaggregated/notes/p12/FCL-ACCEPTANCE.md`. +the Render Server screen's documented extras. Results: `docs/archive/notes/p12/FCL-ACCEPTANCE.md`. ## crosshost_accept.sh + crosshost_report.py — P12 exit gate (b) @@ -90,7 +90,7 @@ A WSL client replays the openra and rd12 traces against the phone's render serve TCP + stream (ssim gate, then `PRESENT_CREDIT` 1/2/3 benchmarks). Adds a temporary /32 route around the host's TUN proxy, checks the path with `tcp_path_check.sh`, and removes the route and stops the server on exit. `crosshost_report.py` reduces the output to a table. Results and the -P6.5 link numbers: `docs/Disaggregated/notes/p12/CROSSHOST-ACCEPTANCE.md`. +P6.5 link numbers: `docs/archive/notes/p12/CROSSHOST-ACCEPTANCE.md`. ## netbench.sh — Wi-Fi TCP throughput baseline @@ -133,7 +133,7 @@ Reducers, all reading a probe directory: - `fcl_stacks.py`: top stacks. The simpleperf reducers need `SIMPLEPERF_DIR` and a `binary_cache` from `binary_cache_builder.py`. -Findings: `docs/Disaggregated/notes/perf-p15/PLAN-P15.md` section 2. +Findings: `docs/archive/notes/perf-p15/PLAN-P15.md` section 2. ## Clocks, bench sessions and run validity (P15) diff --git a/tools/device_bench/p6/ab_session.py b/tools/device_bench/p6/ab_session.py index f52202d7..dda321e0 100644 --- a/tools/device_bench/p6/ab_session.py +++ b/tools/device_bench/p6/ab_session.py @@ -13,7 +13,7 @@ Its first use was `CONTRACT-P6.md` section 9 item 7 (the paired device gate) and doorbell ledger), and it is not specific to those: the thing it computes is "N transports, one thermal window, identical protocol" for any transport/backend/case triple the runner accepts. Everything it does is a step of the protocol in docs/Disaggregated/MEASUREMENTS.md sections 4.4 / 9 -/ 11 plus notes/p5f/device-report.md. +/ 11 plus docs/archive/notes/p5f/device-report.md. Why it is a script and not a shell transcript: a run that wants to be quotable needs the CPU samples, the pin evidence and the library's own wait ledger to come from the SAME window, and the @@ -26,7 +26,7 @@ WHAT IT DELIBERATELY DOES NOT DO. - It does not decide anything about correctness. Benchmark mode takes no snapshot and compares no golden (--benchmark replays the whole trace for timing), so an SSIM column here would be a fabrication. Correctness on this device is section 3 of the P6 closing snapshot - (docs/Disaggregated/notes/p6/README.md) and the retrace lanes. + (docs/archive/notes/p6/README.md) and the retrace lanes. - It does not read `MOBILEGL_TRANSPORT` out of `--transport` on the runner. That flag is applied by run_android_retrace_local.py's run_case() path only; run_benchmark_case() passes `args.env` alone, so `--transport spawn` alongside `--benchmark` is silently ignored and the arm runs @@ -821,7 +821,7 @@ def main(): # The fan is a CONSTANT of the protocol, not a treatment: both arms run under the same airflow, # and on this device it is the difference between a 60 s cool-down between arms and a 20-minute - # one (notes/p4a/INTEGRATOR-DECISIONS.md). `real_speed` is read back because target_level alone + # one (docs/archive/notes/p4a/INTEGRATOR-DECISIONS.md). `real_speed` is read back because target_level alone # is a request, not a fact. fan = "/sys/class/xm_power/hw_monitor/pwm_fan" adb.su(f"echo {args.fan_level} > {fan}/target_level") diff --git a/userguide/linux.md b/userguide/linux.md index 7a995a09..cddb2c8d 100644 --- a/userguide/linux.md +++ b/userguide/linux.md @@ -227,7 +227,7 @@ Android device. With MobileGL: The app, its container scripts and the compositor patch belong to the anland project, not to this repository. Build the server library with the Android NDK and the client with an aarch64 glibc cross toolchain ([building.md](building.md)). The developer runbook for this exact setup is -`docs/Disaggregated/notes/anland/runbook-plasma.md`. +`docs/archive/notes/anland/runbook-plasma.md`. ## Monolith on a Linux desktop