os — validation proof

Go’s own os test suite, converted to C# by go2cs, built against the converted standard library, run under the Go-semantics test host, and compared verdict for verdict against a clean go test -json baseline of the same sources. This page is generated by the converter from that comparison — it is the evidence behind the os row in Validated Test Packages.

Validated 2026-09-07 · converter cca605e6c

683 matched · 2 disclosed — Go 1.23.12, windows/amd64, converted package src/core/os.

Measured at Release (tiered JIT off), oracle go version go1.23.12 windows/amd64.

Both runtimes skip 32 of the matched tests identically.

⚠ Eight tests fail AGREEING on both runtimes — TestReadlink with its six subtests (symlink_dir_drive_absolute, symlink_dir_volume_absolute, symlink_dir_volume_relative, symlink_file_drive_absolute, symlink_file_volume_absolute, symlink_file_volume_relative) and TestOpenFileCreateExclDanglingSymlink — because this host does not hold the Windows symbolic-link creation privilege (SeCreateSymbolicLinkPrivilege), so neither runtime can create the links the tests read back. The verdicts agree name for name and therefore count as matched, and the arithmetic closes: 685 = 645 pass + 32 skip + 8 agreeing-fail. But NEITHER side ran the thing under test, and that is the distinction this note exists to carry: an agreeing failure on an ABSENT CAPABILITY masks a question, where an agreeing failure on shared semantics answers one. 683 of 685 is what a host without that privilege can score. On a host holding it those eight should pass on the Go side, the converted side’s behaviour there is UNMEASURED, and this row’s next bank states its privilege context rather than inheriting this one. PROVENANCE: first measured on G-LAPTOP. A SECOND HOST HAS NOW READ THIS ROW AND AGREES: the i7 read os cold as part of the reflect-importer canary set on 2026-09-07 (the row entered that set when it banked) and reported PASS 683 matched / 2 disclosed at Release with tiering off, identical name for name. The clause this note used to carry - that no second host had read it, because the validated sweep enumerates the roster and a first-time bank is outside it by construction - is therefore SUPERSEDED, by exactly the mechanism it predicted. WHAT IS NOT SUPERSEDED IS THE PRIVILEGE CAVEAT ABOVE: that host also lacks SeCreateSymbolicLinkPrivilege, so the same eight agreeing-fails appear there, 683 of 685 remains what a host without that privilege can score, and the converted side behaviour WITH the privilege is still UNMEASURED on any host. Two hosts agreeing on a number both obtained without the capability is a reproducibility result, not a capability one.

Verdicts

Test go test go2cs
TestAddExtendedPrefix pass pass
TestAppExecLinkStat pass pass
TestAppend pass pass
TestBadNetPathError pass pass
TestChdirAndGetwd pass pass
TestChmod pass pass
TestChtimes pass pass
TestChtimesDir pass pass
TestChtimesOmit pass pass
TestChtimesToUnixZero pass pass
TestClearenv pass pass
TestCloseWithBlockingReadByFd pass pass
TestCloseWithBlockingReadByNewFile pass pass
TestClosedPipeRaceRead pass pass
TestClosedPipeRaceWrite pass pass
TestClosedStat skip skip
TestConsistentEnviron pass pass
TestCopyFS pass pass
TestCopyFSWithSymlinks skip skip
TestCreateTemp pass pass
TestCreateTempBadPattern pass pass
TestCreateTempBadPattern/\tempfile_test\*foo pass pass
TestCreateTempBadPattern/ioutil*test pass pass
TestCreateTempBadPattern/tempfile_test*\foo pass pass
TestCreateTempBadPattern/tempfile_test*foo pass pass
TestCreateTempBadPattern/tempfile_test*foo\ pass pass
TestCreateTempBadPattern/tempfile_test\*foo pass pass
TestCreateTempBadPattern/tempfile_test\foo pass pass
TestCreateTempPattern pass pass
TestDeleteReadOnly pass pass
TestDevNullFile pass pass
TestDirAndSymlinkStats skip skip
TestDirFS pass pass
TestDirFSEmptyDir pass pass
TestDirFSPathsValid skip skip
TestDirFSReadFileProc skip skip
TestDirFSRootDir pass pass
TestDirSeek pass pass
TestDoubleCloseError pass pass
TestDoubleCloseError/dir pass pass
TestDoubleCloseError/file pass pass
TestEPIPE pass pass
TestEnvironConsistency pass pass
TestErrIsExist pass pass
TestErrIsNotExist pass pass
TestErrPathNUL pass pass
TestErrorIsMethods pass pass
TestExecutable pass pass
TestExecutableDeleted skip skip
TestExpand pass pass
TestFTruncate pass pass
TestFdRace pass pass
TestFdReadRace pass pass
TestFileAndSymlinkStats skip skip
TestFileChdir pass pass
TestFileReadDir pass pass
TestFileReadDir/. pass pass
TestFileReadDir/TempDir pass pass
TestFileReadDir/sysdir pass pass
TestFileReaddir pass pass
TestFileReaddir/. pass pass
TestFileReaddir/TempDir pass pass
TestFileReaddir/sysdir pass pass
TestFileReaddirnames pass pass
TestFileReaddirnames/. pass pass
TestFileReaddirnames/TempDir pass pass
TestFileReaddirnames/sysdir pass pass
TestFileStatNUL pass pass
TestFstat pass pass
TestGetppid pass pass
TestHardLink pass pass
TestHostname pass pass
TestIllformedUTF16FileName pass pass
TestIsExist pass pass
TestIsPermission pass pass
TestKillFindProcess pass pass
TestKillStartProcess pass pass
TestLargeCopyViaNetwork pass pass
TestLargeWriteToConsole skip skip
TestLongPath pass pass
TestLongPath/length=247 pass pass
TestLongPath/length=248 pass pass
TestLongPath/length=249 pass pass
TestLongPath/length=400 pass pass
TestLongPathAbs pass pass
TestLongPathRel pass pass
TestLongSymlink skip skip
TestLookupEnv pass pass
TestLstat pass pass
TestMkdirAll pass pass
TestMkdirAllAtSlash skip skip
TestMkdirAllExtendedLength pass pass
TestMkdirAllExtendedLengthAtRoot skip skip
TestMkdirAllLongPath pass pass
TestMkdirAllVolumeNameAtRoot skip skip
TestMkdirAllWithSymlink skip skip
TestMkdirTemp pass pass
TestMkdirTemp/*xyz pass pass
TestMkdirTemp/tempfile_test pass pass
TestMkdirTemp/tempfile_test* pass pass
TestMkdirTemp/tempfile_test*xyz pass pass
TestMkdirTempBadDir pass pass
TestMkdirTempBadPattern pass pass
TestMkdirTempBadPattern/\tempfile_test\*foo pass pass
TestMkdirTempBadPattern/ioutil*test pass pass
TestMkdirTempBadPattern/tempfile_test*\foo pass pass
TestMkdirTempBadPattern/tempfile_test*foo pass pass
TestMkdirTempBadPattern/tempfile_test*foo\ pass pass
TestMkdirTempBadPattern/tempfile_test\*foo pass pass
TestMkdirTempBadPattern/tempfile_test\foo pass pass
TestNetworkSymbolicLink skip skip
TestNewFileInvalid pass pass
TestNilFileMethods pass pass
TestNilProcessStateString pass pass
TestOneDrive pass pass
TestOpenDirTOCTOU pass pass
TestOpenError pass pass
TestOpenFileCreateExclDanglingSymlink fail fail
TestOpenFileKeepsPermissions pass pass
TestOpenNoName pass pass
TestOpenRootSlash pass pass
TestOpenVolumeName pass pass
TestPathErrorUnwrap pass pass
TestPipeCloseRace pass pass
TestPipeEOF pass pass
TestPipeIOCloseRace pass pass
TestPipeThreads skip skip
TestProcessLiteral skip skip
TestProcessReleaseTwice pass pass
TestProgWideChdir pass pass
TestRandomLen pass pass
TestRawConnReadWrite pass pass
TestRead0 pass pass
TestReadAt pass pass
TestReadAtEOF pass pass
TestReadAtNegativeOffset pass pass
TestReadAtOffset pass pass
TestReadClosed pass pass
TestReadDir pass pass
TestReadDirNoFileID pass pass
TestReadDirPipe pass pass
TestReadFile pass pass
TestReadFileProc skip skip
TestReadNonblockingFd skip skip
TestReadOnlyWriteFile pass pass
TestReadStdin pass pass
TestReadStdin/c1/r1/abc pass pass
TestReadStdin/c1/r1/hello\x1aworld pass pass
TestReadStdin/c1/r1/äöü pass pass
TestReadStdin/c1/r1/“hi”™ pass pass
TestReadStdin/c1/r1/あ pass pass
TestReadStdin/c1/r1/🙈🙉🙊 pass pass
TestReadStdin/c1/r10/abc pass pass
TestReadStdin/c1/r10/hello\x1aworld pass pass
TestReadStdin/c1/r10/äöü pass pass
TestReadStdin/c1/r10/“hi”™ pass pass
TestReadStdin/c1/r10/あ pass pass
TestReadStdin/c1/r10/🙈🙉🙊 pass pass
TestReadStdin/c1/r100/abc pass pass
TestReadStdin/c1/r100/hello\x1aworld pass pass
TestReadStdin/c1/r100/äöü pass pass
TestReadStdin/c1/r100/“hi”™ pass pass
TestReadStdin/c1/r100/あ pass pass
TestReadStdin/c1/r100/🙈🙉🙊 pass pass
TestReadStdin/c1/r16/abc pass pass
TestReadStdin/c1/r16/hello\x1aworld pass pass
TestReadStdin/c1/r16/äöü pass pass
TestReadStdin/c1/r16/“hi”™ pass pass
TestReadStdin/c1/r16/あ pass pass
TestReadStdin/c1/r16/🙈🙉🙊 pass pass
TestReadStdin/c1/r2/abc pass pass
TestReadStdin/c1/r2/hello\x1aworld pass pass
TestReadStdin/c1/r2/äöü pass pass
TestReadStdin/c1/r2/“hi”™ pass pass
TestReadStdin/c1/r2/あ pass pass
TestReadStdin/c1/r2/🙈🙉🙊 pass pass
TestReadStdin/c1/r20/abc pass pass
TestReadStdin/c1/r20/hello\x1aworld pass pass
TestReadStdin/c1/r20/äöü pass pass
TestReadStdin/c1/r20/“hi”™ pass pass
TestReadStdin/c1/r20/あ pass pass
TestReadStdin/c1/r20/🙈🙉🙊 pass pass
TestReadStdin/c1/r3/abc pass pass
TestReadStdin/c1/r3/hello\x1aworld pass pass
TestReadStdin/c1/r3/äöü pass pass
TestReadStdin/c1/r3/“hi”™ pass pass
TestReadStdin/c1/r3/あ pass pass
TestReadStdin/c1/r3/🙈🙉🙊 pass pass
TestReadStdin/c1/r4/abc pass pass
TestReadStdin/c1/r4/hello\x1aworld pass pass
TestReadStdin/c1/r4/äöü pass pass
TestReadStdin/c1/r4/“hi”™ pass pass
TestReadStdin/c1/r4/あ pass pass
TestReadStdin/c1/r4/🙈🙉🙊 pass pass
TestReadStdin/c1/r5/abc pass pass
TestReadStdin/c1/r5/hello\x1aworld pass pass
TestReadStdin/c1/r5/äöü pass pass
TestReadStdin/c1/r5/“hi”™ pass pass
TestReadStdin/c1/r5/あ pass pass
TestReadStdin/c1/r5/🙈🙉🙊 pass pass
TestReadStdin/c1/r50/abc pass pass
TestReadStdin/c1/r50/hello\x1aworld pass pass
TestReadStdin/c1/r50/äöü pass pass
TestReadStdin/c1/r50/“hi”™ pass pass
TestReadStdin/c1/r50/あ pass pass
TestReadStdin/c1/r50/🙈🙉🙊 pass pass
TestReadStdin/c1/r8/abc pass pass
TestReadStdin/c1/r8/hello\x1aworld pass pass
TestReadStdin/c1/r8/äöü pass pass
TestReadStdin/c1/r8/“hi”™ pass pass
TestReadStdin/c1/r8/あ pass pass
TestReadStdin/c1/r8/🙈🙉🙊 pass pass
TestReadStdin/c10/r1/abc pass pass
TestReadStdin/c10/r1/hello\x1aworld pass pass
TestReadStdin/c10/r1/äöü pass pass
TestReadStdin/c10/r1/“hi”™ pass pass
TestReadStdin/c10/r1/あ pass pass
TestReadStdin/c10/r1/🙈🙉🙊 pass pass
TestReadStdin/c10/r10/abc pass pass
TestReadStdin/c10/r10/hello\x1aworld pass pass
TestReadStdin/c10/r10/äöü pass pass
TestReadStdin/c10/r10/“hi”™ pass pass
TestReadStdin/c10/r10/あ pass pass
TestReadStdin/c10/r10/🙈🙉🙊 pass pass
TestReadStdin/c10/r100/abc pass pass
TestReadStdin/c10/r100/hello\x1aworld pass pass
TestReadStdin/c10/r100/äöü pass pass
TestReadStdin/c10/r100/“hi”™ pass pass
TestReadStdin/c10/r100/あ pass pass
TestReadStdin/c10/r100/🙈🙉🙊 pass pass
TestReadStdin/c10/r16/abc pass pass
TestReadStdin/c10/r16/hello\x1aworld pass pass
TestReadStdin/c10/r16/äöü pass pass
TestReadStdin/c10/r16/“hi”™ pass pass
TestReadStdin/c10/r16/あ pass pass
TestReadStdin/c10/r16/🙈🙉🙊 pass pass
TestReadStdin/c10/r2/abc pass pass
TestReadStdin/c10/r2/hello\x1aworld pass pass
TestReadStdin/c10/r2/äöü pass pass
TestReadStdin/c10/r2/“hi”™ pass pass
TestReadStdin/c10/r2/あ pass pass
TestReadStdin/c10/r2/🙈🙉🙊 pass pass
TestReadStdin/c10/r20/abc pass pass
TestReadStdin/c10/r20/hello\x1aworld pass pass
TestReadStdin/c10/r20/äöü pass pass
TestReadStdin/c10/r20/“hi”™ pass pass
TestReadStdin/c10/r20/あ pass pass
TestReadStdin/c10/r20/🙈🙉🙊 pass pass
TestReadStdin/c10/r3/abc pass pass
TestReadStdin/c10/r3/hello\x1aworld pass pass
TestReadStdin/c10/r3/äöü pass pass
TestReadStdin/c10/r3/“hi”™ pass pass
TestReadStdin/c10/r3/あ pass pass
TestReadStdin/c10/r3/🙈🙉🙊 pass pass
TestReadStdin/c10/r4/abc pass pass
TestReadStdin/c10/r4/hello\x1aworld pass pass
TestReadStdin/c10/r4/äöü pass pass
TestReadStdin/c10/r4/“hi”™ pass pass
TestReadStdin/c10/r4/あ pass pass
TestReadStdin/c10/r4/🙈🙉🙊 pass pass
TestReadStdin/c10/r5/abc pass pass
TestReadStdin/c10/r5/hello\x1aworld pass pass
TestReadStdin/c10/r5/äöü pass pass
TestReadStdin/c10/r5/“hi”™ pass pass
TestReadStdin/c10/r5/あ pass pass
TestReadStdin/c10/r5/🙈🙉🙊 pass pass
TestReadStdin/c10/r50/abc pass pass
TestReadStdin/c10/r50/hello\x1aworld pass pass
TestReadStdin/c10/r50/äöü pass pass
TestReadStdin/c10/r50/“hi”™ pass pass
TestReadStdin/c10/r50/あ pass pass
TestReadStdin/c10/r50/🙈🙉🙊 pass pass
TestReadStdin/c10/r8/abc pass pass
TestReadStdin/c10/r8/hello\x1aworld pass pass
TestReadStdin/c10/r8/äöü pass pass
TestReadStdin/c10/r8/“hi”™ pass pass
TestReadStdin/c10/r8/あ pass pass
TestReadStdin/c10/r8/🙈🙉🙊 pass pass
TestReadStdin/c100/r1/abc pass pass
TestReadStdin/c100/r1/hello\x1aworld pass pass
TestReadStdin/c100/r1/äöü pass pass
TestReadStdin/c100/r1/“hi”™ pass pass
TestReadStdin/c100/r1/あ pass pass
TestReadStdin/c100/r1/🙈🙉🙊 pass pass
TestReadStdin/c100/r10/abc pass pass
TestReadStdin/c100/r10/hello\x1aworld pass pass
TestReadStdin/c100/r10/äöü pass pass
TestReadStdin/c100/r10/“hi”™ pass pass
TestReadStdin/c100/r10/あ pass pass
TestReadStdin/c100/r10/🙈🙉🙊 pass pass
TestReadStdin/c100/r100/abc pass pass
TestReadStdin/c100/r100/hello\x1aworld pass pass
TestReadStdin/c100/r100/äöü pass pass
TestReadStdin/c100/r100/“hi”™ pass pass
TestReadStdin/c100/r100/あ pass pass
TestReadStdin/c100/r100/🙈🙉🙊 pass pass
TestReadStdin/c100/r16/abc pass pass
TestReadStdin/c100/r16/hello\x1aworld pass pass
TestReadStdin/c100/r16/äöü pass pass
TestReadStdin/c100/r16/“hi”™ pass pass
TestReadStdin/c100/r16/あ pass pass
TestReadStdin/c100/r16/🙈🙉🙊 pass pass
TestReadStdin/c100/r2/abc pass pass
TestReadStdin/c100/r2/hello\x1aworld pass pass
TestReadStdin/c100/r2/äöü pass pass
TestReadStdin/c100/r2/“hi”™ pass pass
TestReadStdin/c100/r2/あ pass pass
TestReadStdin/c100/r2/🙈🙉🙊 pass pass
TestReadStdin/c100/r20/abc pass pass
TestReadStdin/c100/r20/hello\x1aworld pass pass
TestReadStdin/c100/r20/äöü pass pass
TestReadStdin/c100/r20/“hi”™ pass pass
TestReadStdin/c100/r20/あ pass pass
TestReadStdin/c100/r20/🙈🙉🙊 pass pass
TestReadStdin/c100/r3/abc pass pass
TestReadStdin/c100/r3/hello\x1aworld pass pass
TestReadStdin/c100/r3/äöü pass pass
TestReadStdin/c100/r3/“hi”™ pass pass
TestReadStdin/c100/r3/あ pass pass
TestReadStdin/c100/r3/🙈🙉🙊 pass pass
TestReadStdin/c100/r4/abc pass pass
TestReadStdin/c100/r4/hello\x1aworld pass pass
TestReadStdin/c100/r4/äöü pass pass
TestReadStdin/c100/r4/“hi”™ pass pass
TestReadStdin/c100/r4/あ pass pass
TestReadStdin/c100/r4/🙈🙉🙊 pass pass
TestReadStdin/c100/r5/abc pass pass
TestReadStdin/c100/r5/hello\x1aworld pass pass
TestReadStdin/c100/r5/äöü pass pass
TestReadStdin/c100/r5/“hi”™ pass pass
TestReadStdin/c100/r5/あ pass pass
TestReadStdin/c100/r5/🙈🙉🙊 pass pass
TestReadStdin/c100/r50/abc pass pass
TestReadStdin/c100/r50/hello\x1aworld pass pass
TestReadStdin/c100/r50/äöü pass pass
TestReadStdin/c100/r50/“hi”™ pass pass
TestReadStdin/c100/r50/あ pass pass
TestReadStdin/c100/r50/🙈🙉🙊 pass pass
TestReadStdin/c100/r8/abc pass pass
TestReadStdin/c100/r8/hello\x1aworld pass pass
TestReadStdin/c100/r8/äöü pass pass
TestReadStdin/c100/r8/“hi”™ pass pass
TestReadStdin/c100/r8/あ pass pass
TestReadStdin/c100/r8/🙈🙉🙊 pass pass
TestReadStdin/c1000/r1/abc pass pass
TestReadStdin/c1000/r1/hello\x1aworld pass pass
TestReadStdin/c1000/r1/äöü pass pass
TestReadStdin/c1000/r1/“hi”™ pass pass
TestReadStdin/c1000/r1/あ pass pass
TestReadStdin/c1000/r1/🙈🙉🙊 pass pass
TestReadStdin/c1000/r10/abc pass pass
TestReadStdin/c1000/r10/hello\x1aworld pass pass
TestReadStdin/c1000/r10/äöü pass pass
TestReadStdin/c1000/r10/“hi”™ pass pass
TestReadStdin/c1000/r10/あ pass pass
TestReadStdin/c1000/r10/🙈🙉🙊 pass pass
TestReadStdin/c1000/r100/abc pass pass
TestReadStdin/c1000/r100/hello\x1aworld pass pass
TestReadStdin/c1000/r100/äöü pass pass
TestReadStdin/c1000/r100/“hi”™ pass pass
TestReadStdin/c1000/r100/あ pass pass
TestReadStdin/c1000/r100/🙈🙉🙊 pass pass
TestReadStdin/c1000/r16/abc pass pass
TestReadStdin/c1000/r16/hello\x1aworld pass pass
TestReadStdin/c1000/r16/äöü pass pass
TestReadStdin/c1000/r16/“hi”™ pass pass
TestReadStdin/c1000/r16/あ pass pass
TestReadStdin/c1000/r16/🙈🙉🙊 pass pass
TestReadStdin/c1000/r2/abc pass pass
TestReadStdin/c1000/r2/hello\x1aworld pass pass
TestReadStdin/c1000/r2/äöü pass pass
TestReadStdin/c1000/r2/“hi”™ pass pass
TestReadStdin/c1000/r2/あ pass pass
TestReadStdin/c1000/r2/🙈🙉🙊 pass pass
TestReadStdin/c1000/r20/abc pass pass
TestReadStdin/c1000/r20/hello\x1aworld pass pass
TestReadStdin/c1000/r20/äöü pass pass
TestReadStdin/c1000/r20/“hi”™ pass pass
TestReadStdin/c1000/r20/あ pass pass
TestReadStdin/c1000/r20/🙈🙉🙊 pass pass
TestReadStdin/c1000/r3/abc pass pass
TestReadStdin/c1000/r3/hello\x1aworld pass pass
TestReadStdin/c1000/r3/äöü pass pass
TestReadStdin/c1000/r3/“hi”™ pass pass
TestReadStdin/c1000/r3/あ pass pass
TestReadStdin/c1000/r3/🙈🙉🙊 pass pass
TestReadStdin/c1000/r4/abc pass pass
TestReadStdin/c1000/r4/hello\x1aworld pass pass
TestReadStdin/c1000/r4/äöü pass pass
TestReadStdin/c1000/r4/“hi”™ pass pass
TestReadStdin/c1000/r4/あ pass pass
TestReadStdin/c1000/r4/🙈🙉🙊 pass pass
TestReadStdin/c1000/r5/abc pass pass
TestReadStdin/c1000/r5/hello\x1aworld pass pass
TestReadStdin/c1000/r5/äöü pass pass
TestReadStdin/c1000/r5/“hi”™ pass pass
TestReadStdin/c1000/r5/あ pass pass
TestReadStdin/c1000/r5/🙈🙉🙊 pass pass
TestReadStdin/c1000/r50/abc pass pass
TestReadStdin/c1000/r50/hello\x1aworld pass pass
TestReadStdin/c1000/r50/äöü pass pass
TestReadStdin/c1000/r50/“hi”™ pass pass
TestReadStdin/c1000/r50/あ pass pass
TestReadStdin/c1000/r50/🙈🙉🙊 pass pass
TestReadStdin/c1000/r8/abc pass pass
TestReadStdin/c1000/r8/hello\x1aworld pass pass
TestReadStdin/c1000/r8/äöü pass pass
TestReadStdin/c1000/r8/“hi”™ pass pass
TestReadStdin/c1000/r8/あ pass pass
TestReadStdin/c1000/r8/🙈🙉🙊 pass pass
TestReadStdin/c16/r1/abc pass pass
TestReadStdin/c16/r1/hello\x1aworld pass pass
TestReadStdin/c16/r1/äöü pass pass
TestReadStdin/c16/r1/“hi”™ pass pass
TestReadStdin/c16/r1/あ pass pass
TestReadStdin/c16/r1/🙈🙉🙊 pass pass
TestReadStdin/c16/r10/abc pass pass
TestReadStdin/c16/r10/hello\x1aworld pass pass
TestReadStdin/c16/r10/äöü pass pass
TestReadStdin/c16/r10/“hi”™ pass pass
TestReadStdin/c16/r10/あ pass pass
TestReadStdin/c16/r10/🙈🙉🙊 pass pass
TestReadStdin/c16/r100/abc pass pass
TestReadStdin/c16/r100/hello\x1aworld pass pass
TestReadStdin/c16/r100/äöü pass pass
TestReadStdin/c16/r100/“hi”™ pass pass
TestReadStdin/c16/r100/あ pass pass
TestReadStdin/c16/r100/🙈🙉🙊 pass pass
TestReadStdin/c16/r16/abc pass pass
TestReadStdin/c16/r16/hello\x1aworld pass pass
TestReadStdin/c16/r16/äöü pass pass
TestReadStdin/c16/r16/“hi”™ pass pass
TestReadStdin/c16/r16/あ pass pass
TestReadStdin/c16/r16/🙈🙉🙊 pass pass
TestReadStdin/c16/r2/abc pass pass
TestReadStdin/c16/r2/hello\x1aworld pass pass
TestReadStdin/c16/r2/äöü pass pass
TestReadStdin/c16/r2/“hi”™ pass pass
TestReadStdin/c16/r2/あ pass pass
TestReadStdin/c16/r2/🙈🙉🙊 pass pass
TestReadStdin/c16/r20/abc pass pass
TestReadStdin/c16/r20/hello\x1aworld pass pass
TestReadStdin/c16/r20/äöü pass pass
TestReadStdin/c16/r20/“hi”™ pass pass
TestReadStdin/c16/r20/あ pass pass
TestReadStdin/c16/r20/🙈🙉🙊 pass pass
TestReadStdin/c16/r3/abc pass pass
TestReadStdin/c16/r3/hello\x1aworld pass pass
TestReadStdin/c16/r3/äöü pass pass
TestReadStdin/c16/r3/“hi”™ pass pass
TestReadStdin/c16/r3/あ pass pass
TestReadStdin/c16/r3/🙈🙉🙊 pass pass
TestReadStdin/c16/r4/abc pass pass
TestReadStdin/c16/r4/hello\x1aworld pass pass
TestReadStdin/c16/r4/äöü pass pass
TestReadStdin/c16/r4/“hi”™ pass pass
TestReadStdin/c16/r4/あ pass pass
TestReadStdin/c16/r4/🙈🙉🙊 pass pass
TestReadStdin/c16/r5/abc pass pass
TestReadStdin/c16/r5/hello\x1aworld pass pass
TestReadStdin/c16/r5/äöü pass pass
TestReadStdin/c16/r5/“hi”™ pass pass
TestReadStdin/c16/r5/あ pass pass
TestReadStdin/c16/r5/🙈🙉🙊 pass pass
TestReadStdin/c16/r50/abc pass pass
TestReadStdin/c16/r50/hello\x1aworld pass pass
TestReadStdin/c16/r50/äöü pass pass
TestReadStdin/c16/r50/“hi”™ pass pass
TestReadStdin/c16/r50/あ pass pass
TestReadStdin/c16/r50/🙈🙉🙊 pass pass
TestReadStdin/c16/r8/abc pass pass
TestReadStdin/c16/r8/hello\x1aworld pass pass
TestReadStdin/c16/r8/äöü pass pass
TestReadStdin/c16/r8/“hi”™ pass pass
TestReadStdin/c16/r8/あ pass pass
TestReadStdin/c16/r8/🙈🙉🙊 pass pass
TestReadStdin/c2/r1/abc pass pass
TestReadStdin/c2/r1/hello\x1aworld pass pass
TestReadStdin/c2/r1/äöü pass pass
TestReadStdin/c2/r1/“hi”™ pass pass
TestReadStdin/c2/r1/あ pass pass
TestReadStdin/c2/r1/🙈🙉🙊 pass pass
TestReadStdin/c2/r10/abc pass pass
TestReadStdin/c2/r10/hello\x1aworld pass pass
TestReadStdin/c2/r10/äöü pass pass
TestReadStdin/c2/r10/“hi”™ pass pass
TestReadStdin/c2/r10/あ pass pass
TestReadStdin/c2/r10/🙈🙉🙊 pass pass
TestReadStdin/c2/r100/abc pass pass
TestReadStdin/c2/r100/hello\x1aworld pass pass
TestReadStdin/c2/r100/äöü pass pass
TestReadStdin/c2/r100/“hi”™ pass pass
TestReadStdin/c2/r100/あ pass pass
TestReadStdin/c2/r100/🙈🙉🙊 pass pass
TestReadStdin/c2/r16/abc pass pass
TestReadStdin/c2/r16/hello\x1aworld pass pass
TestReadStdin/c2/r16/äöü pass pass
TestReadStdin/c2/r16/“hi”™ pass pass
TestReadStdin/c2/r16/あ pass pass
TestReadStdin/c2/r16/🙈🙉🙊 pass pass
TestReadStdin/c2/r2/abc pass pass
TestReadStdin/c2/r2/hello\x1aworld pass pass
TestReadStdin/c2/r2/äöü pass pass
TestReadStdin/c2/r2/“hi”™ pass pass
TestReadStdin/c2/r2/あ pass pass
TestReadStdin/c2/r2/🙈🙉🙊 pass pass
TestReadStdin/c2/r20/abc pass pass
TestReadStdin/c2/r20/hello\x1aworld pass pass
TestReadStdin/c2/r20/äöü pass pass
TestReadStdin/c2/r20/“hi”™ pass pass
TestReadStdin/c2/r20/あ pass pass
TestReadStdin/c2/r20/🙈🙉🙊 pass pass
TestReadStdin/c2/r3/abc pass pass
TestReadStdin/c2/r3/hello\x1aworld pass pass
TestReadStdin/c2/r3/äöü pass pass
TestReadStdin/c2/r3/“hi”™ pass pass
TestReadStdin/c2/r3/あ pass pass
TestReadStdin/c2/r3/🙈🙉🙊 pass pass
TestReadStdin/c2/r4/abc pass pass
TestReadStdin/c2/r4/hello\x1aworld pass pass
TestReadStdin/c2/r4/äöü pass pass
TestReadStdin/c2/r4/“hi”™ pass pass
TestReadStdin/c2/r4/あ pass pass
TestReadStdin/c2/r4/🙈🙉🙊 pass pass
TestReadStdin/c2/r5/abc pass pass
TestReadStdin/c2/r5/hello\x1aworld pass pass
TestReadStdin/c2/r5/äöü pass pass
TestReadStdin/c2/r5/“hi”™ pass pass
TestReadStdin/c2/r5/あ pass pass
TestReadStdin/c2/r5/🙈🙉🙊 pass pass
TestReadStdin/c2/r50/abc pass pass
TestReadStdin/c2/r50/hello\x1aworld pass pass
TestReadStdin/c2/r50/äöü pass pass
TestReadStdin/c2/r50/“hi”™ pass pass
TestReadStdin/c2/r50/あ pass pass
TestReadStdin/c2/r50/🙈🙉🙊 pass pass
TestReadStdin/c2/r8/abc pass pass
TestReadStdin/c2/r8/hello\x1aworld pass pass
TestReadStdin/c2/r8/äöü pass pass
TestReadStdin/c2/r8/“hi”™ pass pass
TestReadStdin/c2/r8/あ pass pass
TestReadStdin/c2/r8/🙈🙉🙊 pass pass
TestReadStdin/c3/r1/abc pass pass
TestReadStdin/c3/r1/hello\x1aworld pass pass
TestReadStdin/c3/r1/äöü pass pass
TestReadStdin/c3/r1/“hi”™ pass pass
TestReadStdin/c3/r1/あ pass pass
TestReadStdin/c3/r1/🙈🙉🙊 pass pass
TestReadStdin/c3/r10/abc pass pass
TestReadStdin/c3/r10/hello\x1aworld pass pass
TestReadStdin/c3/r10/äöü pass pass
TestReadStdin/c3/r10/“hi”™ pass pass
TestReadStdin/c3/r10/あ pass pass
TestReadStdin/c3/r10/🙈🙉🙊 pass pass
TestReadStdin/c3/r100/abc pass pass
TestReadStdin/c3/r100/hello\x1aworld pass pass
TestReadStdin/c3/r100/äöü pass pass
TestReadStdin/c3/r100/“hi”™ pass pass
TestReadStdin/c3/r100/あ pass pass
TestReadStdin/c3/r100/🙈🙉🙊 pass pass
TestReadStdin/c3/r16/abc pass pass
TestReadStdin/c3/r16/hello\x1aworld pass pass
TestReadStdin/c3/r16/äöü pass pass
TestReadStdin/c3/r16/“hi”™ pass pass
TestReadStdin/c3/r16/あ pass pass
TestReadStdin/c3/r16/🙈🙉🙊 pass pass
TestReadStdin/c3/r2/abc pass pass
TestReadStdin/c3/r2/hello\x1aworld pass pass
TestReadStdin/c3/r2/äöü pass pass
TestReadStdin/c3/r2/“hi”™ pass pass
TestReadStdin/c3/r2/あ pass pass
TestReadStdin/c3/r2/🙈🙉🙊 pass pass
TestReadStdin/c3/r20/abc pass pass
TestReadStdin/c3/r20/hello\x1aworld pass pass
TestReadStdin/c3/r20/äöü pass pass
TestReadStdin/c3/r20/“hi”™ pass pass
TestReadStdin/c3/r20/あ pass pass
TestReadStdin/c3/r20/🙈🙉🙊 pass pass
TestReadStdin/c3/r3/abc pass pass
TestReadStdin/c3/r3/hello\x1aworld pass pass
TestReadStdin/c3/r3/äöü pass pass
TestReadStdin/c3/r3/“hi”™ pass pass
TestReadStdin/c3/r3/あ pass pass
TestReadStdin/c3/r3/🙈🙉🙊 pass pass
TestReadStdin/c3/r4/abc pass pass
TestReadStdin/c3/r4/hello\x1aworld pass pass
TestReadStdin/c3/r4/äöü pass pass
TestReadStdin/c3/r4/“hi”™ pass pass
TestReadStdin/c3/r4/あ pass pass
TestReadStdin/c3/r4/🙈🙉🙊 pass pass
TestReadStdin/c3/r5/abc pass pass
TestReadStdin/c3/r5/hello\x1aworld pass pass
TestReadStdin/c3/r5/äöü pass pass
TestReadStdin/c3/r5/“hi”™ pass pass
TestReadStdin/c3/r5/あ pass pass
TestReadStdin/c3/r5/🙈🙉🙊 pass pass
TestReadStdin/c3/r50/abc pass pass
TestReadStdin/c3/r50/hello\x1aworld pass pass
TestReadStdin/c3/r50/äöü pass pass
TestReadStdin/c3/r50/“hi”™ pass pass
TestReadStdin/c3/r50/あ pass pass
TestReadStdin/c3/r50/🙈🙉🙊 pass pass
TestReadStdin/c3/r8/abc pass pass
TestReadStdin/c3/r8/hello\x1aworld pass pass
TestReadStdin/c3/r8/äöü pass pass
TestReadStdin/c3/r8/“hi”™ pass pass
TestReadStdin/c3/r8/あ pass pass
TestReadStdin/c3/r8/🙈🙉🙊 pass pass
TestReaddirNValues pass pass
TestReaddirOfFile pass pass
TestReaddirSmallSeek pass pass
TestReaddirStatFailures skip skip
TestReaddirnamesOneAtATime pass pass
TestReadlink fail fail
TestReadlink/junction_dir_drive_absolute pass pass
TestReadlink/junction_dir_volume_absolute pass pass
TestReadlink/junction_dir_volume_relative pass pass
TestReadlink/symlink_dir_drive_absolute fail fail
TestReadlink/symlink_dir_volume_absolute fail fail
TestReadlink/symlink_dir_volume_relative fail fail
TestReadlink/symlink_file_drive_absolute fail fail
TestReadlink/symlink_file_volume_absolute fail fail
TestReadlink/symlink_file_volume_relative fail fail
TestRemoveAll pass pass
TestRemoveAllButReadOnlyAndPathError skip skip
TestRemoveAllDot pass pass
TestRemoveAllDotDot pass pass
TestRemoveAllLarge pass pass
TestRemoveAllLongPath skip skip
TestRemoveAllLongPathRelative pass pass
TestRemoveAllNoFcntl skip skip
TestRemoveAllRace skip skip
TestRemoveAllWithMoreErrorThanReqSize pass pass
TestRemoveReadOnlyDir pass pass
TestRemoveUnreadableDir pass pass
TestRename pass pass
TestRenameCaseDifference pass pass
TestRenameCaseDifference/dir pass pass
TestRenameCaseDifference/file pass pass
TestRenameFailed pass pass
TestRenameNotExisting pass pass
TestRenameOverwriteDest pass pass
TestRenameToDirFailed pass pass
TestRootDirAsTemp pass pass
TestRootRelativeDirSymlink skip skip
TestSameFile pass pass
TestSameWindowsFile pass pass
TestSeek pass pass
TestSeekError pass pass
TestShareNotExistError pass pass
TestStartProcess pass pass
TestStartProcess/absolute pass pass
TestStartProcess/relative pass pass
TestStartProcessAttr pass pass
TestStat pass pass
TestStatConsole pass pass
TestStatDir pass pass
TestStatDirModeExec pass pass
TestStatDirWithTrailingSlash pass pass
TestStatError skip skip
TestStatLxSymLink pass pass
TestStatNUL pass pass
TestStatOfInvalidName pass pass
TestStatPagefile pass pass
TestStatRelativeSymlink skip skip
TestStatStdin pass pass
TestStatSymlinkLoop skip skip
TestStdPipe skip skip
TestSymlink skip skip
TestSymlinkCreation skip skip
TestSymlinkWithTrailingSlash skip skip
TestTruncate pass pass
TestTruncateNonexistentFile pass pass
TestUTF16Alloc pass fail (disclosed)
TestUnsetenv pass pass
TestUserCacheDir pass pass
TestUserConfigDir pass pass
TestUserHomeDir pass pass
TestWindowsDevNullFile pass pass
TestWorkingDirectoryRelativeSymlink skip skip
TestWriteAt pass pass
TestWriteAtInAppendMode pass pass
TestWriteAtNegativeOffset pass pass
TestWriteFile pass pass
TestWriteStringAlloc pass fail (disclosed)

Disclosed divergences

A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s hand-owned go2cs_test_disclosures.json; a disclosed test that fails any other way is still a hard mismatch.

Test Class Pinned reason
TestUTF16Alloc alloc-profile exact-count AllocsPerRun asserts (want 1, for syscall.UTF16ToString and syscall.UTF16FromString): each leg allocates ONE object in Go and more than one in the managed model, so the exact count cannot agree. Go’s syscall.UTF16ToString([]uint16{'a','b','c'}) allocates only the returned string - escape analysis keeps the three-element array literal in the caller’s frame - where the converted path must heap-allocate that array and its slice descriptor before the produced @string is counted at all; UTF16FromString is the mirror. That is this class’s definition exactly: Go’s compiler stack-allocates the value where .NET must heap-allocate it. The per-object split is NOT decomposed here - only the totals are measured. READINGS, recorded as a MOVE rather than a replacement, because this number is not stable and an entry that claims it is stops the next reader re-measuring. 2026-08-29 census: 4 allocs per run, 1,400 bytes. 2026-09-01 at master bfc63d487: 4 allocs per run, 20 go2cs-runtime allocations / 1,440 bytes over 5 runs. 2026-09-06 at the train-30 assembly head 9c33b95c0, Release with tiering off, read from the run’s own unit note: 2 allocs per run, 10 go2cs-runtime allocations / 640 bytes over 5 runs - so the count HALVED and the bytes with it. The direction is TOWARD the want of 1, which is the opposite of drift. What caused the halving is NOT attributed here: something between 2026-09-01 and that head did it, it has not been measured, and a plausible cause written into a disclosure is read as established by whoever quotes it next. If a later reading reaches the want the assertion passes and this entry RETIRES - and that retirement should record whether the equality was EARNED or whether the managed floor simply sits there, since a nonzero-byte result reports at least 1 by construction. PRIOR REASON RETIRED, per the coordinator ruling of 2026-08-29: this entry used to argue a UNITS mismatch - that the shim was byte-derived and reported bytes where Go reports mallocs, citing 432 and 128 - and that argument no longer describes the instrument. The host now reports a genuine allocation COUNT from golib’s own allocation sites, the structural mirror of Go’s runtime.MemStats.Mallocs (a LOWER BOUND on the true object count, since C#-compiler and BCL allocations sit outside it), so the comparison is same-units and the row is disclosed on the allocation PROFILE instead. The deliberate asymmetry with os’s TestWriteStringAlloc still stands and is now the load-bearing distinction rather than a units accident: that test bounds allocations at ZERO, a bound a correct implementation could in principle meet, so under ruling #1 of 2026-08-02 it is NOT disclosed and remains a real divergence and an open architectural arc. See the AllocsPerRun entry in docs/ConversionStrategies-Reference.md.
TestWriteStringAlloc deferred exact-count AllocsPerRun assert: os.File.WriteString must allocate ZERO objects per run, and the converted path allocates four. DEFERRED rather than alloc-count-semantics, and the discriminator is the run’s own unit note rather than a source read: the host reports counted 400 go2cs-runtime object allocations (42,400 bytes) over 100 run(s), so the counter SAW the allocations and the figure is an allocation COUNT per run - same units as Go’s, which is exactly the case the deferred class exists for. It carries no floor: nothing in the CLR’s object model requires an allocation to write a string through a file descriptor, so the whole excess is reducible bridge work rather than a structural minimum, and a floor claim here would be one the census could not falsify. SCOPE OF THE MEASUREMENT: Release with tiering off, the configuration of record, read back from the comparison record’s own environment block rather than assumed; no other configuration was run and none is claimed. The reading was re-measured at the train-30 drop after a seat was removed from that assembly - the row’s bank condition - and did not move: four per run at 9c33b95c0 and at 8693aa5ba alike, with the landing tree verified to differ from the measured tree in two behavioral golden files and nothing under src/core.

Excluded declarations

Declarations filtered from both sides of the comparison, and therefore not claimed above: Benchmark, Fuzz and Example declarations the converted host does not execute, plus any test requiring a capability the managed runtime does not provide — a testing member the host has not implemented, or a platform behavior it provably cannot reproduce. Each is named with the capability it needs.

Gated by a host capability

A gate names a declaration the converted test host provably cannot run at all — not an assertion it fails. It is filtered from both sides of the comparison, and because the gate keys on the DECLARATION, every verdict row go test reports underneath it is withdrawn with it. None of the rows below is claimed by the matched count above; they are named here so this page states exactly what the row leaves out.

TestCmdArgs — native output block with caller-side LocalFree

1 verdict row go test reports and this comparison does not claim:

TestCmdArgs

TestDirectoryJunction — raw-metal struct overlay on managed bytes

1 verdict row go test reports and this comparison does not claim:

TestDirectoryJunction

1 verdict row go test reports and this comparison does not claim:

TestDirectorySymbolicLink

TestRemoveAllWithExecutedProcess — relocatable single-file test executable

1 verdict row go test reports and this comparison does not claim:

TestRemoveAllWithExecutedProcess