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.

2026-09-08 — READ ON A HOST THAT HOLDS THE PRIVILEGE, AND THE EIGHT RAN. The i7 read this row solo at Release with tiering off (six runs, byte-identical comparison records) and got the Go side 665 pass + 20 skip and ZERO failures, the converted side 685 with TestUTF16Alloc and TestWriteStringAlloc its only fails, 683 matched — unchanged. The arithmetic against the reading above is forced and it closes: 645 → 665 pass is exactly the eight agreeing-fails plus twelve of the thirty-two skips, and 32 → 20 skip accounts for those same twelve. So on a host holding SeCreateSymbolicLinkPrivilege the eight EXECUTED and passed on BOTH runtimes, and the converted side’s behaviour there is no longer UNMEASURED — which is the question the note above says an agreeing failure on an absent capability was masking. (Only the aggregates were read back, not the per-test set. The twelve skips that moved are, by count, exactly the twelve symlink-named skip/skip rows in the table below; that is consistent with the arithmetic and is not itself a measurement.) 683 matched is INVARIANT across this axis — all twenty moved rows moved on BOTH sides — so the count could never have discriminated a host that holds the privilege from one that does not, which is how a second host’s 683 matched / 2 disclosed can be recorded as agreement with the SET never read. ⚠ THAT CONTRADICTS THE PROVENANCE CLAUSE ABOVE, and it is stated rather than resolved: that clause records the i7 as ALSO lacking the privilege, and this reading of the same host says it holds it. Whether the clause was inferred from the unmoved count, or the host’s privilege state changed between the two readings, is UNRECONCILED here and no mechanism is asserted. Reconciled by a probe on the i7 the same hour (2026-09-08): the session token lists NO SeCreateSymbolicLinkPrivilege and the Developer-Mode unlock value is absent, yet Go 1.23.12’s os.Symlink SUCCEEDS in the sweep’s own shell (a two-line probe, err = <nil>), so the eight run and pass here today; the 2026-09-07 clause’s “also lacks” for this host was not backed by such a probe and is SUPERSEDED for the i7. Whether the host’s state differed then is not recoverable from the record. Unaffected either way: the G-LAPTOP caveat stands as the record of THAT host, and 683 of 685 remains what a host without the privilege can score.

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