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 —
TestReadlinkwith 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) andTestOpenFileCreateExclDanglingSymlink— 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
Releasewith tiering off (six runs, byte-identical comparison records) and got the Go side 665 pass + 20 skip and ZERO failures, the converted side 685 withTestUTF16AllocandTestWriteStringAllocits 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 holdingSeCreateSymbolicLinkPrivilegethe 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 twelvesymlink-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’s683 matched / 2 disclosedcan 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 NOSeCreateSymbolicLinkPrivilegeand the Developer-Mode unlock value is absent, yet Go 1.23.12’sos.SymlinkSUCCEEDS 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.
- BenchmarkAddExtendedPrefix (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkExpand (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLstatDir (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLstatDot (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLstatFile (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReadDir (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReaddir (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReaddirname (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkRemoveAll (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStatDir (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStatDot (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStatFile (benchmark): benchmark execution is deferred to Phase 4D
- ExampleChmod (example): example execution is deferred to Phase 4D
- ExampleChtimes (example): example execution is deferred to Phase 4D
- ExampleCreateTemp (example): example execution is deferred to Phase 4D
- ExampleCreateTemp_suffix (example): example execution is deferred to Phase 4D
- ExampleErrNotExist (example): example execution is deferred to Phase 4D
- ExampleExpand (example): example execution is deferred to Phase 4D
- ExampleExpandEnv (example): example execution is deferred to Phase 4D
- ExampleFileMode (example): example execution is deferred to Phase 4D
- ExampleGetenv (example): example execution is deferred to Phase 4D
- ExampleLookupEnv (example): example execution is deferred to Phase 4D
- ExampleMkdir (example): example execution is deferred to Phase 4D
- ExampleMkdirAll (example): example execution is deferred to Phase 4D
- ExampleMkdirTemp (example): example execution is deferred to Phase 4D
- ExampleMkdirTemp_suffix (example): example execution is deferred to Phase 4D
- ExampleOpenFile (example): example execution is deferred to Phase 4D
- ExampleOpenFile_append (example): example execution is deferred to Phase 4D
- ExampleReadDir (example): example execution is deferred to Phase 4D
- ExampleReadFile (example): example execution is deferred to Phase 4D
- ExampleReadlink (example): example execution is deferred to Phase 4D
- ExampleUnsetenv (example): example execution is deferred to Phase 4D
- ExampleUserCacheDir (example): example execution is deferred to Phase 4D
- ExampleUserConfigDir (example): example execution is deferred to Phase 4D
- ExampleWriteFile (example): example execution is deferred to Phase 4D
- TestCmdArgs (test): requires unsupported testing capabilities: native output block with caller-side LocalFree
- TestDirectoryJunction (test): requires unsupported testing capabilities: raw-metal struct overlay on managed bytes
- TestDirectorySymbolicLink (test): requires unsupported testing capabilities: raw-metal struct overlay on managed bytes
- TestRemoveAllWithExecutedProcess (test): requires unsupported testing capabilities: relocatable single-file test executable
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
TestDirectorySymbolicLink — raw-metal struct overlay on managed bytes
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