From 22555a5378113ac164dca831a8c92719c5fe06d3 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Fri, 21 Aug 2026 20:43:38 +0000 Subject: [PATCH] fix: govern the in-tree helpers the watchdog could not name role_of returned `other` for three real VS Code helpers on the live tree, and compute_policed skips `other`, so they had no budget, no dwell clock, no signal and no warning: a tamasfe.even-better-toml server.js at 280 MB PSS (already above the 256 MiB languageServer budget a matching pattern would have given it), tsserver's typingsInstaller.js at 61 MB, and the built-in markdown-language-features server at 54 MB. Widening the pattern list is the easy fix and the wrong one - launch shapes are each extension's own choice, so the list is a permanent race against a vendor-controlled vocabulary that fails silently, one extension at a time. The default inside the tree is inverted instead: on VS Code's own runtime, unprotected and unnamed becomes role `treeHelper`. Two things buy off the risk that creates rather than assuming it away: - treeHelper is in a new UNKNOWN_ROLES tier, armed only under enforce-all, because its 512 MiB budget is a reasoned guess and no member has been measured at rest. Under enforce - the template default - a coverage gap arrives as `event=would-kill armed=no` in the container log, not as silence. The axis is calibration, not blast radius. - a direct child of a server root is excluded structurally. Core forks (fileWatcher, extensionHost, ptyHost) are exactly the direct children of server-main.js and no extension helper is, so a release that renames --type=extensionHost yields a process that is unmanaged and loud rather than one carrying a guessed 512 MiB budget against the 685 MB it holds. Sweep-log identity for the role is /