162 of the 215 testable standard-library packages (75.3%) now have their
own Go 1.23.1 test suites converted, 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: 18,569 matching
verdicts, 85 signature-pinned disclosed divergences. A row appears
only when EVERY eligible Test function agrees, which is what keeps the
denominator honest.
This is Go 1.23.1's TERMINAL marker, not a waypoint. Every roster row
re-derives from the release's own test sources at a version hop, so
validation spent here past the credibility milestone would be spent twice;
the campaign continues on 1.23.12, the release users would actually choose.
Banked in this arc, and the reason 75% is tagged at all: the POSITION MAP.
A converted frame now reports a Go file:line pair, derived from conversion-
time facts rather than composed -- the file identity falls out of the same
import-path derivation the frame's function name already used, and file and
line ship together because either alone mints a position that exists in
neither tree. The identity is build-shape-faithful, exactly as Go bakes it:
the published standard library reports its trimpath/import-path form, a
-recurse user module reports what Go would have baked for that build. Its
consumer set -- runtime/debug, log, log/slog, flag -- is three of the last
five rows, which is what made it the campaign's highest-leverage single arc.
The row that crossed the line rode it one step further: an unhandled panic
in a converted program now prints Go's own crash report -- panic value,
goroutine header, the Go-spelled traceback -- and SetCrashOutput tees it,
so converted programs die in Go's voice.
Four more arcs landed behind it. CHANNEL DIRECTION became descriptor cargo
riding on the channel value, carried the way array dimensions already were,
and reflect.Value.Recv/Send landed with it -- retiring the chan-direction
disclosure class on its own recorded remedy and banking both template
packages. MAP KEY AND ELEMENT DIMENSIONS became cargo on the same carrier,
reaching a struct field's dims through the pointer and map hops a decode
target cannot measure, and retiring the array-length class whole. A NATIVE
POINTER SLOT now holds the pointer's VALUE rather than a managed reference,
closing the uintptr -> unsafe.Pointer -> uintptr round-trip that took
sync/atomic to 108 of 108 and a GC-invisible dangling-reference hazard with
it; alongside it the alignment identity token became layout-truthful,
answering Go's align64 guarantee from the same metadata that answers
StructField.Offset. And a READMEMSTATS MEASUREMENT SURFACE -- an always-on
GC pause recorder -- supplies real pause and release facts with the read
path measuring 0.0 B per call.
The campaign flushed out correctness classes no compile could see, and its
discipline is visible in what it REFUSED as much as what it banked. A
disclosure names what the managed runtime provably cannot satisfy, never
what is merely unimplemented: encoding/gob stands at 105 of 106 and does not
bank, because reflect.ArrayOf/StructOf is an arc with a price, not a
divergence; net/netip's structural wall fell from 0 to 210 of 267 and it
does not bank either, because all 57 residuals are one root -- allocation
behavior -- and none is disclosable; crypto/internal/edwards25519 was
measured against a signed-off design, found to have no constituency on its
path, and moved off the terminal route rather than forced. The classes as
they stand: alloc-profile, alloc-count-semantics, codegen-liveness and
host-limit carry the long-standing manifests; runtime-capability is minted
and joined the roster preamble with the first banking commit that uses it
-- the one this tag points at; and chan-direction is GONE -- it was written
to retire itself on its own remedy, and it did.
Corpus: 307 converted standard-library projects compiling, the behavioral
suite green at 604 projects, one tree emitting windows, linux and darwin,
and every proof page regenerated from the comparison record that decides
the rows.