slices — validation proof

Go’s own slices 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 slices row in Validated Test Packages.

Validated 2026-09-23 · converter f95f88866

120 matched · 3 disclosed — Go 1.24.13, windows/amd64, converted package src/core/slices.

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

Verdicts

Test go test go2cs
TestAll pass pass
TestAppendSeq pass pass
TestBackward pass pass
TestBinarySearch pass pass
TestBinarySearch/#00 pass pass
TestBinarySearch/aa pass pass
TestBinarySearch/aa#01 pass pass
TestBinarySearch/ab pass pass
TestBinarySearch/ab#01 pass pass
TestBinarySearch/ab#02 pass pass
TestBinarySearch/ac pass pass
TestBinarySearch/ad pass pass
TestBinarySearch/ad#01 pass pass
TestBinarySearch/ax pass pass
TestBinarySearch/bar pass pass
TestBinarySearch/bb pass pass
TestBinarySearch/ca pass pass
TestBinarySearch/ca#01 pass pass
TestBinarySearch/cc pass pass
TestBinarySearch/da pass pass
TestBinarySearch/db pass pass
TestBinarySearch/dd pass pass
TestBinarySearch/foo pass pass
TestBinarySearch/foo#01 pass pass
TestBinarySearch/ma pass pass
TestBinarySearch/mb pass pass
TestBinarySearch/mo pass pass
TestBinarySearch/nb pass pass
TestBinarySearch/qo pass pass
TestBinarySearch/ra pass pass
TestBinarySearch/tr pass pass
TestBinarySearch/vo pass pass
TestBinarySearch/xr pass pass
TestBinarySearch/xx pass pass
TestBinarySearch/xy pass pass
TestBinarySearch/zx pass pass
TestBinarySearch/zz pass pass
TestBinarySearch/zz#01 pass pass
TestBinarySearchFloats pass pass
TestBinarySearchFloats/-0.25 pass pass
TestBinarySearchFloats/-Inf pass pass
TestBinarySearchFloats/0 pass pass
TestBinarySearchFloats/1.4 pass pass
TestBinarySearchFloats/1.5 pass pass
TestBinarySearchFloats/NaN pass pass
TestBinarySearchFunc pass pass
TestBinarySearchInts pass pass
TestBinarySearchInts/20 pass pass
TestBinarySearchInts/23 pass pass
TestBinarySearchInts/43 pass pass
TestBinarySearchInts/80 pass pass
TestChunk pass pass
TestChunk/empty pass pass
TestChunk/even pass pass
TestChunk/nil pass pass
TestChunk/odd pass pass
TestChunk/one pass pass
TestChunk/short pass pass
TestChunkPanics pass pass
TestChunkRange pass pass
TestClip pass pass
TestClone pass pass
TestCollect pass pass
TestCompact pass pass
TestCompactClearTail pass pass
TestCompactFunc pass pass
TestCompactFuncClearTail pass pass
TestCompare pass pass
TestCompareFunc pass pass
TestConcat pass fail (disclosed)
TestConcat_too_large pass pass
TestContains pass pass
TestContainsFunc pass pass
TestDelete pass pass
TestDeleteClearTail pass pass
TestDeleteFunc pass pass
TestDeleteFuncClearTail pass pass
TestDeletePanics pass pass
TestEqual pass pass
TestEqualFunc pass pass
TestGrow pass fail (disclosed)
TestIndex pass pass
TestIndexFunc pass pass
TestInference pass pass
TestInsert pass fail (disclosed)
TestInsertGrowthRate pass pass
TestInsertOverlap pass pass
TestInsertPanics pass pass
TestIssue68488 pass pass
TestMinMax pass pass
TestMinMax/[0_2_-9] pass pass
TestMinMax/[1_2] pass pass
TestMinMax/[1_2_3] pass pass
TestMinMax/[2_1] pass pass
TestMinMax/[2_1_3] pass pass
TestMinMax/[2_2_3] pass pass
TestMinMax/[3_2_1] pass pass
TestMinMax/[3_2_3] pass pass
TestMinMax/[7] pass pass
TestMinMaxNaNs pass pass
TestMinMaxPanics pass pass
TestRepeat pass pass
TestRepeatPanics pass pass
TestReplace pass pass
TestReplaceClearTail pass pass
TestReplaceEndClearTail pass pass
TestReplaceGrow pass pass
TestReplaceGrowthRate pass pass
TestReplaceOverlap pass pass
TestReplacePanics pass pass
TestReverse pass pass
TestSortFloat64Slice pass pass
TestSortFuncIntSlice pass pass
TestSortIntSlice pass pass
TestSortLarge_Random pass pass
TestSortStringSlice pass pass
TestSorted pass pass
TestSortedFunc pass pass
TestSortedStableFunc pass pass
TestStability pass pass
TestValues pass pass
TestValuesAppendSeq pass pass
TestValuesCollect pass pass

Disclosed divergences

A disclosed divergence is a specific Go assertion this conversion does not 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.

The Class column says which kind each one is: a deferred entry is an assertion the managed CLR can meet, pinned against the named plan that will retire it; every other class is one it provably cannot satisfy.

Test Class Pinned reason
TestConcat alloc-count-semantics exact-count allocBytes/AllocsPerRun asserts (want 1 allocation per Concat): the managed measurement mixes golib’s object counter with byte-derived readings the CLR regime cannot denominate in Go mallocs (measured: want 1, reading 2 for the value cases and 280 for the empty case at the B2 kind-split emission with the slice-shaped spread landed), so no allocation behavior can satisfy the count assert. AMENDED 2026-09-23 (C1, as ruled at ledger 2026-09-23 03:37 O4): STAYS alloc-count-semantics on leg 1’s unit – Concat([[]]) reads BYTES 168 B per run (840 bytes over 5 runs at bb54ff0920 (the batch-8b stamp), Release with tiering off, readings-go1.24.13.tsv line 101 (claude/coord-h10-readings ac9f8251ee)), the counter charging none of it. Legs 2-4 print 2 against want 1, COUNT by construction: Grow’s make plus append (slices.cs:441), the append-of-make idiom of docs/phase4/DESIGN-slice-idiom-allocations.md §B (REC-C, append-of-make), whose recognition predicts them 2 -> 1. The ‘byte-derived shim’ premise above is stale: the host reports a COUNT whenever golib charged anything.
TestGrow deferred want-zero-then-exactly-one allocation asserts around Grow: the managed regime reads 112 where Go wants 0 (sufficient capacity) and 2 where Go wants 1 (insufficient) — the byte-derived shim and golib’s object counter cannot denominate the CLR’s behavior in Go malloc units, the established alloc-count-semantics shape. RELABEL 2026-09-23 (C1, as ruled at ledger 2026-09-23 03:37 O4): alloc-count-semantics -> deferred. The byte-derived-shim premise is retired: the reading is COUNT (2 = the make plus the grown array; the 112 this reason quotes for the sufficient leg is gone).
TestInsert deferred an allocation BUDGET assert (want < 25 inserting 50 elements): Go’s Insert rotates through two in-place appends whose temporaries escape analysis keeps on the stack, while the managed model heap-boxes each rotation temporary — 242 golib objects at the B2 kind-split emission with the slice-shaped spread landed, a structural stack-vs-heap profile no slimming brings under the budget. RELABEL 2026-09-23 (C1, as ruled at ledger 2026-09-23 03:37 O5): alloc-profile -> deferred. Magnitude is not a structural proof; both families are REC-C’s, not zh-box’s.

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.