dev/whitelist.cs
using Sandbox;

if (args.Length == 0)
    throw new ArgumentException("Pass runtime assembly paths in dependency order.");

using var access = new AccessControl();
foreach (var path in args)
{
    using var input = File.OpenRead(path);
    var result = access.VerifyAssembly(input, out _);
    Console.WriteLine($"{(result.Success ? "PASS" : "FAIL")}: s&box whitelist · {Path.GetFileName(path)}");
    foreach (var error in result.Errors) Console.Error.WriteLine(error);
    foreach (var error in result.WhitelistErrors)
    {
        Console.Error.WriteLine(error.Name);
        foreach (var location in error.Locations) Console.Error.WriteLine("  " + location.Text);
    }
    if (!result.Success) return 1;
}
return 0;