Exemple
go.opentelemetry.io/otel/trace v1.37.0: noop.Span
Échantillon vérifié pour golang go.opentelemetry.io/otel/trace v1.37.0: noop.Span. Le contrat s'est exécuté sur go 1.26 · linux debian/x64 · docker et a…
sha256:79218bf2f7320221de12bd4063c216cd606aafa0113916bbcf77928df7157d98
Ce réseau offre une seule chose : un échantillon qui compile. Il l'a exécuté dans un bac à sable et conservé le reçu signé. Il ne note rien et ne garantit rien : si le même code compile chez vous, il ne l'a pas mesuré.
Combien de clés de signature distinctes ont déposé un reçu de contrat réussi. Une seule, c'est l'auteur ; plus d'une signifie que quelqu'un d'autre l'a compilé aussi. Une clé est auto-générée sans identité enregistrée derrière, donc on compte des clés, pas des personnes.
MIT-0
Preuves d'exécution
L'environnement déclaré et les exécutions signées sont séparés, pour que vous voyiez exactement ce que cet échantillon a exécuté et où.
- Base de preuve
- Contrat signé réussi
- Reçus de vérification
- 1
- Clés de signature qui l’ont compilé
- 1
Environnement déclaré
linux 24 · ubuntu · glibc 2.39 x64 go
Environnements des exécutions de vérification
| Environnement | Contrat | Étapes | Exécution |
|---|---|---|---|
| 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-19 |
Cas
HOW- Objectif
- verify go.opentelemetry.io/otel/trace/noop.Span in pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0
- Symboles
-
- go.opentelemetry.io/otel/trace/noop.Span
- Créé
- 2026-09-17T17:50:12Z
Contrat
- noop.Span implements the trace.Span interface
- noop.Span.IsRecording returns false
- noop.Span.SpanContext returns an empty SpanContext by default
- noop.Span mutation methods execute safely without panic or side effects
- noop.Span.TracerProvider returns a valid noop TracerProvider
Fichiers
- PROMPT.md
- csx.json
- go.mod
- go.sum
- sample.go
- spec.json
- test/contract.go
Code source
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 go.opentelemetry.io/otel/trace/noop.Span in pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0
Demonstrate these symbols/APIs:
- go.opentelemetry.io/otel/trace/noop.Span
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.
{"case":{"caseId":"case:sha256:f48e041f61d11dc05e21029c209cd3dbce8d4317de11809079c6e3145915d891","contract":["noop.Span implements the trace.Span interface","noop.Span.IsRecording returns false","noop.Span.SpanContext returns an empty SpanContext by default","noop.Span mutation methods execute safely without panic or side effects","noop.Span.TracerProvider returns a valid noop TracerProvider"],"goal":"verify go.opentelemetry.io/otel/trace/noop.Span in pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0","kind":"HOW","packages":["pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0"],"schemaVersion":1,"symbols":["go.opentelemetry.io/otel/trace/noop.Span"]},"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/go.opentelemetry.io/otel/trace@v1.37.0"],"schemaVersion":1,"subject":"pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0","symbols":["go.opentelemetry.io/otel/trace/noop.Span"],"verifierAdapter":"golang@1"}
module sample
go 1.26.6
require (
go.opentelemetry.io/otel v1.37.0
go.opentelemetry.io/otel/trace v1.37.0
)
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
package sample
import (
"context"
"errors"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/noop"
)
// SpanHandler wraps a trace.Span and provides safe operation helpers.
type SpanHandler struct {
span trace.Span
}
// NewSpanHandler creates a new SpanHandler. If span is nil, a noop.Span is used.
func NewSpanHandler(span trace.Span) *SpanHandler {
if span == nil {
span = noop.Span{}
}
return &SpanHandler{span: span}
}
// Span returns the underlying trace.Span.
func (h *SpanHandler) Span() trace.Span {
return h.span
}
// ExecuteWithSpan simulates a unit of work recorded on the span.
func (h *SpanHandler) ExecuteWithSpan(ctx context.Context, actionName string, fail bool) error {
h.span.SetName(actionName)
h.span.SetAttributes(
attribute.String("action.name", actionName),
attribute.Bool("action.fail", fail),
)
h.span.AddEvent("action_executed")
if fail {
err := errors.New("simulated action failure")
h.span.RecordError(err)
h.span.SetStatus(codes.Error, err.Error())
h.span.End()
return err
}
h.span.SetStatus(codes.Ok, "success")
h.span.End()
return nil
}
{
"schemaVersion": 1,
"goal": "verify go.opentelemetry.io/otel/trace/noop.Span in pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0",
"kind": "HOW",
"packages": [
"pkg:golang/go.opentelemetry.io/otel/trace@v1.37.0"
],
"symbols": [
"go.opentelemetry.io/otel/trace/noop.Span"
]
}
package main
import (
"context"
"errors"
"fmt"
"os"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/noop"
"sample"
)
func main() {
ctx := context.Background()
// 1. noop.Span implements the trace.Span interface
var s trace.Span = noop.Span{}
if s == nil {
fmt.Fprintf(os.Stderr, "noop.Span instance is nil\n")
os.Exit(1)
}
// 2. noop.Span.IsRecording returns false
if s.IsRecording() {
fmt.Fprintf(os.Stderr, "noop.Span.IsRecording() returned true, expected false\n")
os.Exit(1)
}
// 3. noop.Span.SpanContext returns an empty SpanContext by default
sc := s.SpanContext()
var zeroSC trace.SpanContext
if !sc.Equal(zeroSC) {
fmt.Fprintf(os.Stderr, "noop.Span.SpanContext() is not zero/empty: %v\n", sc)
os.Exit(1)
}
if sc.IsValid() {
fmt.Fprintf(os.Stderr, "noop.Span.SpanContext().IsValid() returned true, expected false\n")
os.Exit(1)
}
// 4. noop.Span mutation methods execute safely without panic or side effects
s.SetName("operation-name")
s.SetAttributes(
attribute.String("key", "val"),
attribute.Int("count", 42),
)
s.AddEvent("event-name", trace.WithAttributes(attribute.Bool("ok", true)))
s.AddLink(trace.Link{})
s.RecordError(errors.New("test error"))
s.SetStatus(codes.Error, "test status")
s.End()
// 5. noop.Span.TracerProvider returns a valid noop TracerProvider
tp := s.TracerProvider()
if tp == nil {
fmt.Fprintf(os.Stderr, "noop.Span.TracerProvider() returned nil\n")
os.Exit(1)
}
tracer := tp.Tracer("test-tracer")
if tracer == nil {
fmt.Fprintf(os.Stderr, "tp.Tracer() returned nil\n")
os.Exit(1)
}
// 6. Integration with sample helper package
handler := sample.NewSpanHandler(nil)
if handler.Span() == nil {
fmt.Fprintf(os.Stderr, "NewSpanHandler default span is nil\n")
os.Exit(1)
}
if err := handler.ExecuteWithSpan(ctx, "task1", false); err != nil {
fmt.Fprintf(os.Stderr, "ExecuteWithSpan failed: %v\n", err)
os.Exit(1)
}
if err := handler.ExecuteWithSpan(ctx, "task2", true); err == nil {
fmt.Fprintf(os.Stderr, "ExecuteWithSpan expected error, got nil\n")
os.Exit(1)
}
fmt.Println("All noop.Span contract assertions passed.")
}
Seeder d'origine
anonyme