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.
- BenchmarkBinarySearchFloats (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBinarySearchFuncStruct (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompact (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompactFunc (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompactFunc_Large (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompact_Large (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkEqualFunc_Large (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexFunc_Large (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndex_Large (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReplace (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSortFuncStruct (benchmark): benchmark execution is deferred to Phase 4D
- ExampleAll (example): example execution is deferred to Phase 4D
- ExampleAppendSeq (example): example execution is deferred to Phase 4D
- ExampleBackward (example): example execution is deferred to Phase 4D
- ExampleBinarySearch (example): example execution is deferred to Phase 4D
- ExampleBinarySearchFunc (example): example execution is deferred to Phase 4D
- ExampleChunk (example): example execution is deferred to Phase 4D
- ExampleClip (example): example execution is deferred to Phase 4D
- ExampleClone (example): example execution is deferred to Phase 4D
- ExampleCollect (example): example execution is deferred to Phase 4D
- ExampleCompact (example): example execution is deferred to Phase 4D
- ExampleCompactFunc (example): example execution is deferred to Phase 4D
- ExampleCompare (example): example execution is deferred to Phase 4D
- ExampleCompareFunc (example): example execution is deferred to Phase 4D
- ExampleConcat (example): example execution is deferred to Phase 4D
- ExampleContains (example): example execution is deferred to Phase 4D
- ExampleContainsFunc (example): example execution is deferred to Phase 4D
- ExampleDelete (example): example execution is deferred to Phase 4D
- ExampleDeleteFunc (example): example execution is deferred to Phase 4D
- ExampleEqual (example): example execution is deferred to Phase 4D
- ExampleEqualFunc (example): example execution is deferred to Phase 4D
- ExampleGrow (example): example execution is deferred to Phase 4D
- ExampleIndex (example): example execution is deferred to Phase 4D
- ExampleIndexFunc (example): example execution is deferred to Phase 4D
- ExampleInsert (example): example execution is deferred to Phase 4D
- ExampleIsSorted (example): example execution is deferred to Phase 4D
- ExampleIsSortedFunc (example): example execution is deferred to Phase 4D
- ExampleMax (example): example execution is deferred to Phase 4D
- ExampleMaxFunc (example): example execution is deferred to Phase 4D
- ExampleMin (example): example execution is deferred to Phase 4D
- ExampleMinFunc (example): example execution is deferred to Phase 4D
- ExampleRepeat (example): example execution is deferred to Phase 4D
- ExampleReplace (example): example execution is deferred to Phase 4D
- ExampleReverse (example): example execution is deferred to Phase 4D
- ExampleSort (example): example execution is deferred to Phase 4D
- ExampleSortFunc_caseInsensitive (example): example execution is deferred to Phase 4D
- ExampleSortFunc_multiField (example): example execution is deferred to Phase 4D
- ExampleSortStableFunc (example): example execution is deferred to Phase 4D
- ExampleSorted (example): example execution is deferred to Phase 4D
- ExampleSortedFunc (example): example execution is deferred to Phase 4D
- ExampleSortedStableFunc (example): example execution is deferred to Phase 4D
- ExampleValues (example): example execution is deferred to Phase 4D