Merge native containment master into V3 system-message layer

Preserve strict live-smoke challenges and structural system messages while adopting the native subprocess runtime. Regenerate only the current Cordis inspection recording from the upstream V2 source to retain its no-ordinary-PID coverage; predecessor bytes match master.
This commit is contained in:
Tianyi Cui
2026-09-07 18:46:59 +08:00
162 changed files with 8422 additions and 1037 deletions
+108 -3
View File
@@ -770,7 +770,7 @@ def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
"--scenario",
choices=("all", "sdk-default", "sdk-custom", "sdk-minimal", "sdk-fs-search", "sdk-spawn-node", "sdk-mcp", "sdk-snapshot", "sdk-restart", "sdk-profile-plugin", "sdk-live", "direct"),
choices=("all", "sdk-default", "sdk-custom", "sdk-minimal", "sdk-fs-search", "sdk-spawn-node", "sdk-mcp", "sdk-snapshot", "sdk-restart", "sdk-profile-plugin", "sdk-live", "runner", "direct"),
default="all",
)
parser.add_argument("--exe", type=Path)
@@ -789,13 +789,20 @@ def main() -> None:
parser.error("--scenario sdk-profile-plugin requires --installed-wheel")
if args.installed_wheel:
args.exe = assert_installed_wheel_environment()
if args.scenario in {"all", "sdk-custom", "sdk-minimal", "sdk-fs-search", "sdk-spawn-node", "sdk-snapshot", "sdk-restart", "direct"} and args.exe is None:
parser.error("--exe is required for custom, minimal, snapshot, and direct scenarios")
if args.scenario in {"all", "sdk-custom", "sdk-minimal", "sdk-fs-search", "sdk-spawn-node", "sdk-snapshot", "sdk-restart", "runner", "direct"} and args.exe is None:
parser.error("--exe is required for custom, minimal, fs-search, spawn-node, snapshot, restart, runner, and direct scenarios")
if args.update_snapshots and args.scenario not in {"all", "sdk-minimal", "sdk-snapshot", "sdk-restart"}:
parser.error("--update-snapshots requires --scenario sdk-minimal, sdk-snapshot, sdk-restart, or all")
if args.exe is not None and not args.exe.is_file():
parser.error(f"runtime executable does not exist: {args.exe}")
if args.scenario in {"all", "runner"}:
assert args.exe is not None
smoke_packaged_runner(args.exe.resolve())
if args.scenario == "runner":
print("smoke-python-runtime: runner passed")
return
if args.scenario == "sdk-live":
smoke_sdk_live()
print("smoke-python-runtime: sdk-live passed")
@@ -1455,6 +1462,104 @@ def smoke_direct(base_url: str, executable: Path) -> None:
assert_session_log(sessions, root, EXPECTED_TEXT)
def smoke_packaged_runner(executable: Path) -> None:
"""Exercise the private subprocess runner through the single-file entry."""
with tempfile.TemporaryDirectory(prefix="dsh-packaged-runner-") as temporary:
root = Path(temporary).resolve()
target_script = (
"import os,sys; "
"ok = (os.getcwd() == os.environ['PACKAGED_RUNNER_EXPECTED_CWD'] "
"and os.environ.get('DSH_SUBPROCESS_RUNNER') == 'target-collision-restored'); "
"sys.exit(7 if ok else 9)"
)
if not IS_WINDOWS:
request_path = root / "launch-request.json"
target_env = dict(os.environ)
target_env["DSH_SUBPROCESS_RUNNER"] = "target-collision-restored"
target_env["PACKAGED_RUNNER_EXPECTED_CWD"] = str(root)
request_path.write_text(
json.dumps({"cwd": str(root), "env": target_env}),
encoding="utf-8",
)
request_path.chmod(0o600)
environment = dict(os.environ)
environment["DSH_SUBPROCESS_RUNNER"] = str(request_path)
result = subprocess.run(
[str(executable), "--", sys.executable, "-c", target_script],
cwd=root,
env=environment,
capture_output=True,
text=True,
timeout=30,
check=False,
)
if result.returncode != 7 or request_path.exists() or (root / "startup-error.json").exists():
raise AssertionError(
"packaged POSIX runner failed: "
f"exit={result.returncode}; stdout={result.stdout!r}; stderr={result.stderr!r}"
)
return
node = shutil.which("node")
if node is None:
raise AssertionError("packaged Windows runner smoke requires node on PATH")
helper = root / "windows-runner-smoke.mjs"
helper.write_text(
"""import { spawn } from 'node:child_process'
const [runtime, target, cwd, targetScript] = process.argv.slice(2)
const child = spawn(runtime, ['--', target, '-c', targetScript], {
cwd,
env: { ...process.env, DSH_SUBPROCESS_RUNNER: 'windows' },
stdio: ['ignore', 'ignore', 'ignore', 'ipc', 'pipe', 'pipe', 'pipe'],
})
const messages = []
let stdout = ''
let stderr = ''
child.stdio[4].destroy()
child.stdio[5].on('data', chunk => { stdout += chunk.toString() })
child.stdio[6].on('data', chunk => { stderr += chunk.toString() })
child.on('message', message => { messages.push(message) })
const result = await new Promise((resolve, reject) => {
child.once('error', reject)
child.once('spawn', () => {
child.send({
type: 'start',
cwd,
env: {
...process.env,
DSH_SUBPROCESS_RUNNER: 'target-collision-restored',
PACKAGED_RUNNER_EXPECTED_CWD: cwd,
},
}, error => { if (error) reject(error) })
})
child.once('close', (exitCode, signal) => { resolve({ exitCode, signal }) })
})
process.stdout.write(JSON.stringify({ ...result, messages, stdout, stderr }))
""",
encoding="utf-8",
)
helper_result = subprocess.run(
[node, str(helper), str(executable), sys.executable, str(root), target_script],
cwd=root,
capture_output=True,
text=True,
timeout=30,
check=False,
)
if helper_result.returncode != 0:
raise AssertionError(f"packaged Windows runner helper failed: {helper_result.stderr}")
observed = json.loads(helper_result.stdout)
expected = {
"exitCode": 0,
"signal": None,
"messages": [{"type": "target-exit", "exitCode": 7}],
"stdout": "",
"stderr": "",
}
if observed != expected:
raise AssertionError(f"packaged Windows runner returned unexpected facts: {observed}")
def is_idle_notification(message: dict[str, object]) -> bool:
"""Return whether a JSON-RPC notification marks a session idle."""
params = message.get("params")