[CI] (P13 W5 S4): an include-closure probe keeps the record core clear of MG_Remote and the wire serializer.

This commit is contained in:
2026-10-06 13:13:39 -04:00
parent b1978890b4
commit 851251671c
2 changed files with 30 additions and 3 deletions
+2 -2
View File
@@ -2386,13 +2386,13 @@ jobs:
run: sudo apt-get update && sudo apt-get install -y clang-20 libx11-dev
- name: Include-closure check and self-test
# --expect-probes 4 (contract-v2.md 7.6): an exit code cannot tell four probes from none,
# --expect-probes 5 (contract-v2.md 7.6; P13 W5 adds record-core): an exit code cannot tell five probes from none,
# so a --probe typo or a manifest edit that selected nothing would run zero probes and
# exit 0 - the second half of the finding that added the flag. The count is the length of
# scripts/check_include_closure.py's PROBES list and changing one means changing the other.
#
# Use the compiler selected for this runner's installed toolchain.
run: python3 scripts/check_include_closure.py --mode both --compiler "${MOBILEGL_CI_CXX}" --self-test --require-all --expect-probes 4
run: python3 scripts/check_include_closure.py --mode both --compiler "${MOBILEGL_CI_CXX}" --self-test --require-all --expect-probes 5
benchmark:
runs-on: ubuntu-latest
+28 -1
View File
@@ -23,6 +23,7 @@ and P7 have to be able to sever. So the arbiter here is the preprocessor's own
Config.h, MG_Backend/, BufferState/,
ProgramState/Shader* (+ <= 2 `glslang::`)
wire-header MG_Remote/Transport/ITransport.h MobileGL/Includes.h
record-core MG_Impl/Pipe/Verb/VerbPort.h (+ the record core) MG_Remote/ 3rdparty/flatbuffers/
The forbidden sets deliberately say nothing about glslang, spirv-cross or vulkan:
MobileGL/Includes.h pulls all three unconditionally (:53,:56,:59,:80-84,:130) and both
@@ -53,7 +54,7 @@ four probes from none. The campaign gate spells `--compiler clang++`: there is n
python3 scripts/check_include_closure.py --mode text --self-test
python3 scripts/check_include_closure.py --mode both --compiler clang++ --self-test
python3 scripts/check_include_closure.py --mode both --self-test --require-all --expect-probes 4
python3 scripts/check_include_closure.py --mode both --self-test --require-all --expect-probes 5
"""
import argparse
@@ -142,6 +143,32 @@ PROBES = [
"Why": "WireLog.h:9-24 states the rule: nothing about a byte pipe needs the GL "
"frontend's umbrella header. Green today - it is the gate's own canary.",
},
{
"Name": "record-core",
"Header": "MobileGL/MG_Impl/Pipe/Verb/VerbPort.h",
"Tu": "#include <MG_Impl/Pipe/Verb/VerbPort.h>\n"
"#include <MG_Impl/Pipe/Verb/GpuWriteSet.h>\n"
"#include <MG_Backend/Record/RecordVerbSink.h>\n"
"#include <MG_Backend/Record/StagedTextureStore.h>\n"
"#include <MG_Backend/Record/ApplyRoleBackend.h>\n"
"#include <MG_State/GLState/BufferState/PersistentMapTracker.h>\n"
"#include <MG_Pipe/PipeVerbSink.h>\n"
"#include <MG_Pipe/PipeSessionFail.h>\n"
"#include <MG_Pipe/PipeClientSeam.h>\n"
"#include <MG_Pipe/PipeFatalFamily.h>\n",
"Forbidden": [
"MobileGL/MG_Remote/",
"3rdparty/flatbuffers/",
],
"Allow": [],
"TextLimits": {},
"Why": "P13 W5: the record arm runs in a library without a transport (the FCL-embedded "
"build), so the record core - the verb port, the record verb sink, the staged "
"stores, the persistent-map tracker and the MG_Pipe seams they die and latch "
"through - may not reach MG_Remote or the wire's serializer even under an #if; "
"the seams (PipeSessionFail.h, PipeClientSeam.h, ApplyRoleBackend.h) are the "
"only way across.",
},
]
# Deleting a probe must be red, not quietly green.