CodeSampleX

サンプル

golang.org/x/mod v0.40.0: compare, validate, and canonicalize semantic versions with semver

検証済みサンプル — golang golang.org/x/mod v0.40.0: compare, validate, and canonicalize semantic versions with semver. go 1.26 · linux alpine/x64 · docker で contract…

sha256:03efc8be6aa516feaf2745d4209c6e4a90a6c581f1e4d8589b4e899f35d3b3f9

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 MIT-0

実行証拠

宣言された環境と署名済みの実行を分けてあります。このサンプルが何をどこで実行したかをそのまま確認できます。

証拠の基準
署名済みコントラクト合格
検証レシート
1
ビルドした署名鍵
1
宣言された環境 linux 24 · ubuntu · glibc 2.39 x64 go

検証実行環境

環境 コントラクト ステージ 実行日
go 1.26 · linux alpine/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1golang:1.26-alpine@sha256:28d89ee9cc0f…
2026-08-27

ケース

HOW
ゴール
compare, validate, and canonicalize semantic versions with semver
パッケージ
シンボル
  • semver.Build
  • semver.Canonical
  • semver.Compare
  • semver.IsValid
  • semver.Major
  • semver.MajorMinor
  • semver.Max
  • semver.Prerelease
  • semver.Sort
作成日
2026-08-27T10:11:34Z

コントラクト

  1. semver.IsValid reports true for valid semantic version strings and false for versions without v prefix or invalid format
  2. semver.Compare compares two semantic version strings returning negative, zero, or positive integer
  3. semver.Canonical returns the canonical form of a semantic version string stripping build metadata
  4. semver.Major returns the major version prefix of a semantic version string
  5. semver.MajorMinor returns the major and minor version prefix of a semantic version string
  6. semver.Prerelease returns the prerelease extension part of a semantic version string
  7. semver.Build returns the build metadata extension part of a semantic version string
  8. semver.Max returns the maximum of two semantic version strings
  9. semver.Sort sorts a slice of semantic version strings in ascending order according to semver precedence

ファイル

  • PROMPT.md
  • csx.json
  • go.mod
  • go.sum
  • main.go
  • spec.json
  • test/contract.go

ソースアーティファクトをダウンロード (tar.gz)

ソース

PROMPT.md
Clean-room public code sample — generation instructions

Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.

A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.

Goal: compare, validate, and canonicalize semantic versions with semver
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:golang/golang.org/x/mod@v0.40.0
Demonstrate these symbols/APIs:
  - semver.Build
  - semver.Canonical
  - semver.Compare
  - semver.IsValid
  - semver.Major
  - semver.MajorMinor
  - semver.Max
  - semver.Prerelease
  - semver.Sort

Rules:
  - One focused purpose; the smallest project that proves the goal.
  - Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
  - Pin every dependency with a lockfile so resolution is reproducible.
  - No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
  - No personal names, emails, company names, or project identifiers of any kind.
  - No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
  - Keep it under 200 files and 256KB packed.
csx.json
{"case":{"caseId":"case:sha256:b8e36ca62118d5b01b5e0418ae1902f8c13c7d5c1e677f5a01694bab3d8e11d6","contract":["semver.IsValid reports true for valid semantic version strings and false for versions without v prefix or invalid format","semver.Compare compares two semantic version strings returning negative, zero, or positive integer","semver.Canonical returns the canonical form of a semantic version string stripping build metadata","semver.Major returns the major version prefix of a semantic version string","semver.MajorMinor returns the major and minor version prefix of a semantic version string","semver.Prerelease returns the prerelease extension part of a semantic version string","semver.Build returns the build metadata extension part of a semantic version string","semver.Max returns the maximum of two semantic version strings","semver.Sort sorts a slice of semantic version strings in ascending order according to semver precedence"],"goal":"compare, validate, and canonicalize semantic versions with semver","kind":"HOW","packages":["pkg:golang/golang.org/x/mod@v0.40.0"],"schemaVersion":1,"symbols":["semver.Build","semver.Canonical","semver.Compare","semver.IsValid","semver.Major","semver.MajorMinor","semver.Max","semver.Prerelease","semver.Sort"]},"contractCommand":["go","run","./test"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"golang","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"go","schemaVersion":1},"license":"MIT-0","packages":["pkg:golang/golang.org/x/mod@v0.40.0"],"schemaVersion":1,"subject":"pkg:golang/golang.org/x/mod@v0.40.0","symbols":["semver.Build","semver.Canonical","semver.Compare","semver.IsValid","semver.Major","semver.MajorMinor","semver.Max","semver.Prerelease","semver.Sort"],"verifierAdapter":"golang@1"}
go.mod
module sample-golang-semver

go 1.25.0

require golang.org/x/mod v0.40.0
go.sum
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
main.go
package main

import (
	"fmt"

	"golang.org/x/mod/semver"
)

func main() {
	v1 := "v1.2.3-beta.1+build100"
	v2 := "v1.2.3"

	fmt.Printf("IsValid(%q): %v\n", v1, semver.IsValid(v1))
	fmt.Printf("Canonical(%q): %s\n", v1, semver.Canonical(v1))
	fmt.Printf("Major(%q): %s\n", v1, semver.Major(v1))
	fmt.Printf("MajorMinor(%q): %s\n", v1, semver.MajorMinor(v1))
	fmt.Printf("Prerelease(%q): %s\n", v1, semver.Prerelease(v1))
	fmt.Printf("Build(%q): %s\n", v1, semver.Build(v1))
	fmt.Printf("Compare(%q, %q): %d\n", v1, v2, semver.Compare(v1, v2))
	fmt.Printf("Max(%q, %q): %s\n", v1, v2, semver.Max(v1, v2))

	versions := []string{"v2.0.0", "v1.0.4", "v1.2.0", "v1.0.0-alpha"}
	semver.Sort(versions)
	fmt.Printf("Sorted: %v\n", versions)
}
spec.json
{
  "schemaVersion": 1,
  "goal": "compare, validate, and canonicalize semantic versions with semver",
  "kind": "HOW",
  "packages": [
    "pkg:golang/golang.org/x/mod@v0.40.0"
  ],
  "symbols": [
    "semver.Build",
    "semver.Canonical",
    "semver.Compare",
    "semver.IsValid",
    "semver.Major",
    "semver.MajorMinor",
    "semver.Max",
    "semver.Prerelease",
    "semver.Sort"
  ]
}
test/contract.go
package main

import (
	"fmt"
	"os"

	"golang.org/x/mod/semver"
)

func main() {
	// Assertion 1: semver.IsValid reports true for valid semantic version strings and false for versions without v prefix or invalid format
	{
		if !semver.IsValid("v1.2.3") {
			fmt.Fprintf(os.Stderr, "FAIL: semver.IsValid(v1.2.3) returned false\n")
			os.Exit(1)
		}
		if !semver.IsValid("v0.0.1-alpha.1+20200101") {
			fmt.Fprintf(os.Stderr, "FAIL: semver.IsValid(v0.0.1-alpha.1+20200101) returned false\n")
			os.Exit(1)
		}
		if semver.IsValid("1.2.3") {
			fmt.Fprintf(os.Stderr, "FAIL: semver.IsValid(1.2.3) returned true; expected false without 'v' prefix\n")
			os.Exit(1)
		}
		if semver.IsValid("v1.2.x") {
			fmt.Fprintf(os.Stderr, "FAIL: semver.IsValid(v1.2.x) returned true for invalid version\n")
			os.Exit(1)
		}
	}

	// Assertion 2: semver.Compare compares two semantic version strings returning negative, zero, or positive integer
	{
		if semver.Compare("v1.2.0", "v1.2.3") >= 0 {
			fmt.Fprintf(os.Stderr, "FAIL: expected semver.Compare(v1.2.0, v1.2.3) < 0\n")
			os.Exit(1)
		}
		if semver.Compare("v2.0.0", "v1.9.9") <= 0 {
			fmt.Fprintf(os.Stderr, "FAIL: expected semver.Compare(v2.0.0, v1.9.9) > 0\n")
			os.Exit(1)
		}
		if semver.Compare("v1.2.3", "v1.2.3") != 0 {
			fmt.Fprintf(os.Stderr, "FAIL: expected semver.Compare(v1.2.3, v1.2.3) == 0\n")
			os.Exit(1)
		}
		if semver.Compare("v1.0.0-alpha", "v1.0.0") >= 0 {
			fmt.Fprintf(os.Stderr, "FAIL: expected prerelease v1.0.0-alpha < release v1.0.0\n")
			os.Exit(1)
		}
	}

	// Assertion 3: semver.Canonical returns the canonical form of a semantic version string stripping build metadata
	{
		if canonical := semver.Canonical("v1.2.3-alpha.1+build123"); canonical != "v1.2.3-alpha.1" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Canonical did not strip build metadata: got %q, expected %q\n", canonical, "v1.2.3-alpha.1")
			os.Exit(1)
		}
		if canonical := semver.Canonical("v1.2.0"); canonical != "v1.2.0" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Canonical(v1.2.0) got %q, expected %q\n", canonical, "v1.2.0")
			os.Exit(1)
		}
		if canonical := semver.Canonical("invalid"); canonical != "" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Canonical(invalid) returned non-empty: %q\n", canonical)
			os.Exit(1)
		}
	}

	// Assertion 4: semver.Major returns the major version prefix of a semantic version string
	{
		if major := semver.Major("v2.3.4-beta"); major != "v2" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Major(v2.3.4-beta) got %q, expected %q\n", major, "v2")
			os.Exit(1)
		}
		if major := semver.Major("v0.1.2"); major != "v0" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Major(v0.1.2) got %q, expected %q\n", major, "v0")
			os.Exit(1)
		}
		if major := semver.Major("invalid"); major != "" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Major(invalid) got %q, expected empty string\n", major)
			os.Exit(1)
		}
	}

	// Assertion 5: semver.MajorMinor returns the major and minor version prefix of a semantic version string
	{
		if mm := semver.MajorMinor("v2.3.4-beta"); mm != "v2.3" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.MajorMinor(v2.3.4-beta) got %q, expected %q\n", mm, "v2.3")
			os.Exit(1)
		}
		if mm := semver.MajorMinor("v1.0.0"); mm != "v1.0" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.MajorMinor(v1.0.0) got %q, expected %q\n", mm, "v1.0")
			os.Exit(1)
		}
		if mm := semver.MajorMinor("invalid"); mm != "" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.MajorMinor(invalid) got %q, expected empty string\n", mm)
			os.Exit(1)
		}
	}

	// Assertion 6: semver.Prerelease returns the prerelease extension part of a semantic version string
	{
		if pre := semver.Prerelease("v1.2.3-rc.1+build"); pre != "-rc.1" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Prerelease(v1.2.3-rc.1+build) got %q, expected %q\n", pre, "-rc.1")
			os.Exit(1)
		}
		if pre := semver.Prerelease("v1.2.3"); pre != "" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Prerelease(v1.2.3) got %q, expected empty string\n", pre)
			os.Exit(1)
		}
	}

	// Assertion 7: semver.Build returns the build metadata extension part of a semantic version string
	{
		if bld := semver.Build("v1.2.3-rc.1+build99"); bld != "+build99" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Build(v1.2.3-rc.1+build99) got %q, expected %q\n", bld, "+build99")
			os.Exit(1)
		}
		if bld := semver.Build("v1.2.3"); bld != "" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Build(v1.2.3) got %q, expected empty string\n", bld)
			os.Exit(1)
		}
	}

	// Assertion 8: semver.Max returns the maximum of two semantic version strings
	{
		if max := semver.Max("v1.2.0", "v1.3.0"); max != "v1.3.0" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Max(v1.2.0, v1.3.0) got %q, expected %q\n", max, "v1.3.0")
			os.Exit(1)
		}
		if max := semver.Max("v2.1.0", "v2.0.5"); max != "v2.1.0" {
			fmt.Fprintf(os.Stderr, "FAIL: semver.Max(v2.1.0, v2.0.5) got %q, expected %q\n", max, "v2.1.0")
			os.Exit(1)
		}
	}

	// Assertion 9: semver.Sort sorts a slice of semantic version strings in ascending order according to semver precedence
	{
		versions := []string{"v1.3.0", "v1.1.0", "v2.0.0", "v1.0.0-beta", "v1.2.0"}
		semver.Sort(versions)
		expected := []string{"v1.0.0-beta", "v1.1.0", "v1.2.0", "v1.3.0", "v2.0.0"}
		for i, v := range versions {
			if v != expected[i] {
				fmt.Fprintf(os.Stderr, "FAIL: semver.Sort at index %d got %q, expected %q\n", i, v, expected[i])
				os.Exit(1)
			}
		}
	}

	fmt.Println("PASS: semver contract passed")
}

オリジンシーダー

匿名