Files
MobileGL/scripts/ci/fatal_census_baseline.json
T
swung0x48 f141918aa1 [scripts, MG_Remote, MG_Impl, MG_Test] (P7): the fatal census gate widened to the split server image
`scripts/ci/fatal_census.py` scanned `MG_Remote/` and saw four abort sites. CONTRACT-P6
§12.1 already says what the server image is - "P6's server image is the whole
libMobileGL.so" - and the server process was executing seventy-nine more deaths the gate
could not see: 15 in DirectGLES.cpp, 12 in Managers.cpp, 11 in VkBufferManager.cpp, 7 in
PipeRoute.cpp. SCAN_ROOTS is now MG_Remote / MG_Pipe / MG_Backend / MG_Impl/Pipe /
MG_State, `.inc` joins `.cpp`/`.h` (the Magma wire arms and the generated wire records are
.inc files, and 20 sites are reachable only through one), and MG_Benchmark /
MG_IntegrationTest join MG_Test in the exclusion.

Four rules now, where there were two:

  1. an abort names its family within twelve lines, OR it is argued into FUNNEL_FILES /
     the new FUNNEL_SITES table. FUNNEL_SITES exempts an individual funnel inside a file
     that has ordinary named deaths around it, and only when one of the file's anchors
     appears in the same window - so the exemption follows the funnel if it moves, expires
     if it is deleted, and does not cover an unrelated abort added to the same file. Two
     entries, one line of reason each: PipeApply.cpp's MGP_TRIP_WIRE_REPORT and
     PipeWire.inc's MGPipeWireProtocolFatal.
  2. unchanged: a WireLogFatal / SessionFail call carries a `Fatal{` in its string.
  3. NEW: every family word found in the perimeter has a row in FatalFamilies.def. Eleven
     words did not, and now do (see below).
  4. NEW: every `Refuse{Word}` names a RefuseCode enumerator. This is what catches
     `Refuse{AuthenticationRequired}` (SocketTransport.cpp:161), a word protocol.fbs has
     never had - PH-7 (2). Renamed to the enum's own `Authentication`, and
     SocketTransportTest pins the spelling to `EnumNameRefuseCode` so the two cannot
     drift again.

`abort_sites` was recorded and never compared. It is now a DOWNWARD ratchet with a
per-file map beside it, so "83 became 84" reports as "VkBufferManager.cpp went 11 -> 12,
here are its lines"; fewer sites - the direction `@P7` retirement moves the number - asks
for a re-baseline rather than blocking one.

Eleven new `.def` rows for the eleven rowless words. Ten are ProtocolCorruption for the
reason that bucket already states. ResourceUnavailable is ServerCrashed, not SegmentMismatch:
SegmentMismatch means a shared SEGMENT was the wrong size, and telling a peer that when a
VkBuffer allocation failed would be a lie about whose geometry was wrong. A twelfth word was
collapsed rather than given a row - `InitialBytesNotCarried` (PipeFill.cpp) said the same
thing as `UncarriedInitialBytes` (WireTables.cpp) about the same record, and two words for
one family is the drift a6 censused.

Red-once, four ways: an unnamed `std::abort()` appended under MG_State reds naming the file
and the line; deleting the `Fatal{` from PipeRoute.cpp's ResidualBlockSize reds; putting
`Refuse{AuthenticationRequired}` back reds rule 4; a typo'd family word reds rule 3 and the
vocabulary ratchet together.
2026-09-22 14:01:06 -04:00

76 lines
2.5 KiB
JSON

{
"abort_sites": 83,
"abort_sites_by_file": {
"MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp": 15,
"MobileGL/MG_Backend/DirectGLES/Managers.cpp": 12,
"MobileGL/MG_Backend/DirectGLES/MultiDraw.cpp": 2,
"MobileGL/MG_Backend/DirectGLES/Utils.cpp": 1,
"MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp": 2,
"MobileGL/MG_Backend/DirectVulkan/Renderer/MagmaPipeArms.h": 1,
"MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp": 1,
"MobileGL/MG_Backend/DirectVulkan/Renderer/VkBufferManager.cpp": 11,
"MobileGL/MG_Backend/DirectVulkan/Renderer/WireDraw.inc": 1,
"MobileGL/MG_Backend/DirectVulkan/Renderer/WireFramebuffer.inc": 1,
"MobileGL/MG_Backend/Init.cpp": 2,
"MobileGL/MG_Backend/MGPipe/PipeInputs.cpp": 3,
"MobileGL/MG_Impl/Pipe/PipeFill.cpp": 5,
"MobileGL/MG_Impl/Pipe/ResourceTracker.h": 5,
"MobileGL/MG_Impl/Pipe/SlotAllocator.cpp": 2,
"MobileGL/MG_Pipe/PipeApply.cpp": 3,
"MobileGL/MG_Pipe/PipeRoute.cpp": 7,
"MobileGL/MG_Pipe/generated/PipeFilled.inc": 1,
"MobileGL/MG_Pipe/generated/PipeWire.inc": 1,
"MobileGL/MG_Remote/FatalFunnel.cpp": 1,
"MobileGL/MG_Remote/Server/StagedShadow.h": 1,
"MobileGL/MG_Remote/Server/StagedTextureStore.h": 1,
"MobileGL/MG_Remote/Transport/WireLog.cpp": 1,
"MobileGL/MG_State/GLState/BufferState/BufferObject.cpp": 2,
"MobileGL/MG_State/GLState/TextureState/MipmapStorage.cpp": 1
},
"families": [
"ApplyThreadJoinTimeout",
"ApplyThreadNotRunning",
"ArchiveEmpty",
"ArtefactsMissing",
"BarrierTimeout",
"BarrierViolation",
"BlobMissing",
"ClientTablesUninstalled",
"ConsumerMaskLie",
"EventRingOverflow",
"NoClientSession",
"PipeLegacyMemosDisabled",
"PipeVerifyBadKnob",
"PipeVerifyDiffer",
"PresentCreditTimeout",
"ProtocolCorruption",
"ReadbackDeclined",
"ReadbackReplyShort",
"ReplyError",
"ReplyMismatched",
"ReplyMissing",
"ReplyOverrun",
"ReplyStatusInvalid",
"ReplyToNoSlot",
"ReplyTooLarge",
"ResidualBlockSize",
"ResourceUnavailable",
"RetirementWaitFailed",
"RingOverrun",
"RoleViolation",
"StageSnapshotTooNarrow",
"UncarriedInitialBytes",
"UnexpectedMapAccept",
"UnimplementedAdoptTier",
"UnimplementedClientSession",
"UnimplementedWritebackWait",
"UnmigratedEmulation",
"UnmigratedPipeInput",
"UnmigratedSurface",
"UnmigratedVerb",
"UnnamedIdentity",
"UnsetCallMask",
"UnsizedReadback"
]
}