CodeSampleX

示例

google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5: annotations.E_FieldBehavior, annotations.FieldBehavior

已验证示例 — golang google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5: annotations.E_FieldBehavior, annotations.FieldBehavior. contract…

sha256:4b3de2f9f843113f46d5cb0996ff9c4bb909b68d29da34b3605530cef75b8312

本网络只提供一件事:能构建的样本。它在沙箱中运行并保留签名回执。它不评级、不担保——同样的代码能否在你的环境构建,它没有测量过。 提交了通过的契约回执的不同签名密钥数量。为 1 表示只有作者;大于 1 表示还有其他人构建过。密钥是自行生成的,背后没有注册身份,因此计的是密钥而非人。 MIT-0

执行证据

声明的环境与签名的运行分开呈现,你可以看到这个样本究竟运行了什么、在哪里运行。

证据依据
签名契约通过
验证回执
1
构建过它的签名密钥
1
声明的环境 linux 24 · ubuntu · glibc 2.39 x64 go

验证运行环境

环境 契约 阶段 运行日期
go 1.26 · linux debian/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1golang:1.26@sha256:e30143be198a…
2026-09-05

案例

HOW
目标
verify google.golang.org/genproto/googleapis/api/annotations.FieldBehavior in pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5
包
符号
  • google.golang.org/genproto/googleapis/api/annotations.E_FieldBehavior
  • google.golang.org/genproto/googleapis/api/annotations.FieldBehavior
创建时间
2026-09-05T10:58:52Z

契约

  1. FieldBehavior enum defines protobuf field lifecycle annotations including REQUIRED, OUTPUT_ONLY, and IMMUTABLE
  2. annotations.E_FieldBehavior extension descriptor attaches repeated FieldBehavior values to descriptorpb.FieldOptions
  3. proto.GetExtension retrieves the slice of FieldBehavior values configured on FieldOptions
  4. FieldOptions with annotations.E_FieldBehavior preserves field behavior designations across proto wire serialization and deserialization
  5. proto.ClearExtension removes annotations.E_FieldBehavior from FieldOptions

文件

  • 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: verify google.golang.org/genproto/googleapis/api/annotations.FieldBehavior in pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5
Demonstrate these symbols/APIs:
  - google.golang.org/genproto/googleapis/api/annotations.E_FieldBehavior
  - google.golang.org/genproto/googleapis/api/annotations.FieldBehavior

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:2f2c34bd206be1999d356bd1fa4bc2d83e7146124ef419dcad2a3a842578843a","contract":["FieldBehavior enum defines protobuf field lifecycle annotations including REQUIRED, OUTPUT_ONLY, and IMMUTABLE","annotations.E_FieldBehavior extension descriptor attaches repeated FieldBehavior values to descriptorpb.FieldOptions","proto.GetExtension retrieves the slice of FieldBehavior values configured on FieldOptions","FieldOptions with annotations.E_FieldBehavior preserves field behavior designations across proto wire serialization and deserialization","proto.ClearExtension removes annotations.E_FieldBehavior from FieldOptions"],"goal":"verify google.golang.org/genproto/googleapis/api/annotations.FieldBehavior in pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5","kind":"HOW","packages":["pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5"],"schemaVersion":1,"symbols":["google.golang.org/genproto/googleapis/api/annotations.E_FieldBehavior","google.golang.org/genproto/googleapis/api/annotations.FieldBehavior"]},"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/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5"],"schemaVersion":1,"subject":"pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5","symbols":["google.golang.org/genproto/googleapis/api/annotations.E_FieldBehavior","google.golang.org/genproto/googleapis/api/annotations.FieldBehavior"],"verifierAdapter":"golang@1"}
go.mod
module sample

go 1.25.0

require (
	google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5
	google.golang.org/protobuf v1.36.12
)
go.sum
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5 h1:izFU9hz7aeLI/Mi1J0991ae+xcwRLr7hTqWnB/9aIIU=
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5/go.mod h1:3LhxRw4YYkf+ylAfgaY9JlVLFKhokkCV8duhLLe7+t0=
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
main.go
package main

import (
	"fmt"
	"log"

	"google.golang.org/genproto/googleapis/api/annotations"
	"google.golang.org/protobuf/proto"
	"google.golang.org/protobuf/types/descriptorpb"
)

func main() {
	// 1. Define field behaviors for a resource ID field: REQUIRED and IMMUTABLE
	behaviors := []annotations.FieldBehavior{
		annotations.FieldBehavior_REQUIRED,
		annotations.FieldBehavior_IMMUTABLE,
	}

	// 2. Attach field behavior extension to descriptorpb.FieldOptions
	fieldOpts := &descriptorpb.FieldOptions{}
	proto.SetExtension(fieldOpts, annotations.E_FieldBehavior, behaviors)

	// 3. Serialize and deserialize FieldOptions with extension
	data, err := proto.Marshal(fieldOpts)
	if err != nil {
		log.Fatalf("failed to marshal field options: %v", err)
	}

	var decoded descriptorpb.FieldOptions
	if err := proto.Unmarshal(data, &decoded); err != nil {
		log.Fatalf("failed to unmarshal field options: %v", err)
	}

	// 4. Retrieve field behaviors from unmarshaled options
	if proto.HasExtension(&decoded, annotations.E_FieldBehavior) {
		ext := proto.GetExtension(&decoded, annotations.E_FieldBehavior).([]annotations.FieldBehavior)
		for _, b := range ext {
			fmt.Printf("Field behavior: %s (number %d)\n", b.String(), b.Number())
		}
	}
}
spec.json
{
  "schemaVersion": 1,
  "goal": "verify google.golang.org/genproto/googleapis/api/annotations.FieldBehavior in pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5",
  "kind": "HOW",
  "packages": [
    "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260825221802-da73d73af1c5"
  ],
  "symbols": [
    "google.golang.org/genproto/googleapis/api/annotations.E_FieldBehavior",
    "google.golang.org/genproto/googleapis/api/annotations.FieldBehavior"
  ]
}
test/contract.go
package main

import (
	"fmt"
	"os"

	"google.golang.org/genproto/googleapis/api/annotations"
	"google.golang.org/protobuf/proto"
	"google.golang.org/protobuf/types/descriptorpb"
)

func assert(condition bool, message string) {
	if !condition {
		fmt.Fprintf(os.Stderr, "Assertion failed: %s\n", message)
		os.Exit(1)
	}
}

func main() {
	// 1. FieldBehavior enum defines protobuf field lifecycle annotations including REQUIRED, OUTPUT_ONLY, and IMMUTABLE
	assert(annotations.FieldBehavior_FIELD_BEHAVIOR_UNSPECIFIED.String() == "FIELD_BEHAVIOR_UNSPECIFIED", "unspecified enum string")
	assert(annotations.FieldBehavior_OPTIONAL.String() == "OPTIONAL", "optional enum string")
	assert(annotations.FieldBehavior_REQUIRED.String() == "REQUIRED", "required enum string")
	assert(annotations.FieldBehavior_OUTPUT_ONLY.String() == "OUTPUT_ONLY", "output_only enum string")
	assert(annotations.FieldBehavior_INPUT_ONLY.String() == "INPUT_ONLY", "input_only enum string")
	assert(annotations.FieldBehavior_IMMUTABLE.String() == "IMMUTABLE", "immutable enum string")
	assert(annotations.FieldBehavior_UNORDERED_LIST.String() == "UNORDERED_LIST", "unordered_list enum string")
	assert(annotations.FieldBehavior_NON_EMPTY_DEFAULT.String() == "NON_EMPTY_DEFAULT", "non_empty_default enum string")
	assert(annotations.FieldBehavior_IDENTIFIER.String() == "IDENTIFIER", "identifier enum string")

	assert(int32(annotations.FieldBehavior_REQUIRED.Number()) == 2, "required number should be 2")
	assert(int32(annotations.FieldBehavior_OUTPUT_ONLY.Number()) == 3, "output_only number should be 3")
	assert(int32(annotations.FieldBehavior_IMMUTABLE.Number()) == 5, "immutable number should be 5")

	// 2. annotations.E_FieldBehavior extension descriptor attaches repeated FieldBehavior values to descriptorpb.FieldOptions
	fieldOpts := &descriptorpb.FieldOptions{}
	assert(!proto.HasExtension(fieldOpts, annotations.E_FieldBehavior), "initially HasExtension should be false")

	behaviors := []annotations.FieldBehavior{
		annotations.FieldBehavior_REQUIRED,
		annotations.FieldBehavior_IMMUTABLE,
	}
	proto.SetExtension(fieldOpts, annotations.E_FieldBehavior, behaviors)
	assert(proto.HasExtension(fieldOpts, annotations.E_FieldBehavior), "HasExtension should be true after SetExtension")

	// 3. proto.GetExtension retrieves the slice of FieldBehavior values configured on FieldOptions
	ext := proto.GetExtension(fieldOpts, annotations.E_FieldBehavior)
	retrieved, ok := ext.([]annotations.FieldBehavior)
	assert(ok && retrieved != nil, "retrieved extension must be []annotations.FieldBehavior")
	assert(len(retrieved) == 2, "expected 2 field behaviors")
	assert(retrieved[0] == annotations.FieldBehavior_REQUIRED, "first behavior must be REQUIRED")
	assert(retrieved[1] == annotations.FieldBehavior_IMMUTABLE, "second behavior must be IMMUTABLE")

	// 4. FieldOptions with annotations.E_FieldBehavior preserves field behavior designations across proto wire serialization and deserialization
	data, err := proto.Marshal(fieldOpts)
	assert(err == nil, "proto.Marshal of FieldOptions should succeed")
	assert(len(data) > 0, "marshaled payload should not be empty")

	var unmarshaled descriptorpb.FieldOptions
	err = proto.Unmarshal(data, &unmarshaled)
	assert(err == nil, "proto.Unmarshal of FieldOptions should succeed")
	assert(proto.HasExtension(&unmarshaled, annotations.E_FieldBehavior), "unmarshaled should have annotations.E_FieldBehavior")

	unmarshaledExt, ok := proto.GetExtension(&unmarshaled, annotations.E_FieldBehavior).([]annotations.FieldBehavior)
	assert(ok && unmarshaledExt != nil, "unmarshaled extension must be []annotations.FieldBehavior")
	assert(len(unmarshaledExt) == 2, "unmarshaled behaviors count should match")
	assert(unmarshaledExt[0] == annotations.FieldBehavior_REQUIRED, "unmarshaled first behavior must be REQUIRED")
	assert(unmarshaledExt[1] == annotations.FieldBehavior_IMMUTABLE, "unmarshaled second behavior must be IMMUTABLE")
	assert(proto.Equal(fieldOpts, &unmarshaled), "unmarshaled FieldOptions should be proto.Equal")

	// 5. proto.ClearExtension removes annotations.E_FieldBehavior from FieldOptions
	proto.ClearExtension(fieldOpts, annotations.E_FieldBehavior)
	assert(!proto.HasExtension(fieldOpts, annotations.E_FieldBehavior), "HasExtension must be false after ClearExtension")

	fmt.Println("All contract assertions passed successfully.")
}

原始种子者

匿名