Пример
github.com/rs/zerolog v1.15.0: DebugLevel
Проверенный пример — golang github.com/rs/zerolog v1.15.0: DebugLevel. Контракт выполнен на go 1.26 · linux debian/x64 · docker и пройден.
sha256:f12c69fe0386fde445a15f012bc4c8578bd9b93757f8228f75565e59235440e3
Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла.
Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди.
MIT-0
Свидетельства выполнения
Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.
- Основа свидетельства
- Подписанный контракт пройден
- Квитанции проверки
- 1
- Ключи подписи, собравшие его
- 1
Заявленная среда
go 1.26 linux 24 · ubuntu · glibc 2.39 amd64 go 1.26 go 1.26 go 1
Среды запусков проверки
| Окружение | Контракт | Этапы | Запуск |
|---|---|---|---|
| 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-14 |
Кейс
HOW- Цель
- verify github.com/rs/zerolog.DebugLevel in pkg:golang/github.com/rs/zerolog@v1.15.0
- Символы
-
- github.com/rs/zerolog.DebugLevel
- Окружение
- go 1.26.6
- Создан
- 2026-09-14T23:51:08Z
Контракт
- zerolog.DebugLevel has string representation "debug"
- zerolog.ParseLevel parses "debug" to zerolog.DebugLevel
- zerolog.Logger configured with DebugLevel emits debug log messages
- zerolog.Logger configured above DebugLevel suppresses debug log messages
Файлы
- PROMPT.md
- contract_test.go
- csx.json
- go.mod
- go.sum
- spec.json
- zerolog_sample.go
Исходный код
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 github.com/rs/zerolog.DebugLevel in pkg:golang/github.com/rs/zerolog@v1.15.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:golang/github.com/rs/zerolog@v1.15.0
Demonstrate these symbols/APIs:
- github.com/rs/zerolog.DebugLevel
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.
package sample
import (
"bytes"
"strings"
"testing"
"github.com/rs/zerolog"
)
func TestContractZerologDebugLevel(t *testing.T) {
// 1. Verify zerolog.DebugLevel string value is "debug"
if zerolog.DebugLevel.String() != "debug" {
t.Fatalf("expected DebugLevel string to be 'debug', got %q", zerolog.DebugLevel.String())
}
// 2. Verify ParseLevel correctly parses "debug" to zerolog.DebugLevel
parsed, err := ParseDebugLevel("debug")
if err != nil {
t.Fatalf("failed to parse level string 'debug': %v", err)
}
if !IsDebugLevel(parsed) {
t.Fatalf("expected parsed level to be DebugLevel, got %v", parsed)
}
// 3. Verify logger configured with DebugLevel sets level and logs debug events
var debugBuf bytes.Buffer
debugLogger := NewDebugLogger(&debugBuf)
if debugLogger.GetLevel() != zerolog.DebugLevel {
t.Fatalf("expected logger level to be DebugLevel, got %v", debugLogger.GetLevel())
}
debugMsg := "debug level event recorded"
LogDebug(debugLogger, debugMsg)
output := debugBuf.String()
if !strings.Contains(output, debugMsg) {
t.Fatalf("expected log output to contain message %q, got %q", debugMsg, output)
}
if !strings.Contains(output, `"level":"debug"`) {
t.Fatalf("expected log output to contain level 'debug', got %q", output)
}
// 4. Verify debug logs are suppressed when logger level is higher than DebugLevel
var infoBuf bytes.Buffer
infoLogger := zerolog.New(&infoBuf).Level(zerolog.InfoLevel)
LogDebug(infoLogger, "should not be logged")
if infoBuf.Len() != 0 {
t.Fatalf("expected no output for debug event on InfoLevel logger, got %q", infoBuf.String())
}
}
{"case":{"caseId":"case:sha256:93d6e08d41df6cec0510788188f3d767250c3f48903f113261025e59b3288b5e","contract":["zerolog.DebugLevel has string representation \"debug\"","zerolog.ParseLevel parses \"debug\" to zerolog.DebugLevel","zerolog.Logger configured with DebugLevel emits debug log messages","zerolog.Logger configured above DebugLevel suppresses debug log messages"],"goal":"verify github.com/rs/zerolog.DebugLevel in pkg:golang/github.com/rs/zerolog@v1.15.0","kind":"HOW","packages":["pkg:golang/github.com/rs/zerolog@v1.15.0"],"schemaVersion":1,"symbols":["github.com/rs/zerolog.DebugLevel"]},"contractCommand":["go","test","./..."],"environment":{"arch":"amd64","compiler":"go","compilerVersion":"1.26.6","distro":"ubuntu","ecosystem":"golang","language":"go","languageVersion":"1.26.6","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"go","packageManagerVersion":"1.26.6","runtime":"go","runtimeVersion":"1.26.6","schemaVersion":1},"license":"MIT-0","packages":["pkg:golang/github.com/rs/zerolog@v1.15.0"],"schemaVersion":1,"subject":"pkg:golang/github.com/rs/zerolog@v1.15.0","symbols":["github.com/rs/zerolog.DebugLevel"],"verifierAdapter":"golang@1"}
module example.com/sample
go 1.26.6
require github.com/rs/zerolog v1.15.0
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.15.0 h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=
github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
{
"schemaVersion": 1,
"goal": "verify github.com/rs/zerolog.DebugLevel in pkg:golang/github.com/rs/zerolog@v1.15.0",
"kind": "HOW",
"packages": [
"pkg:golang/github.com/rs/zerolog@v1.15.0"
],
"symbols": [
"github.com/rs/zerolog.DebugLevel"
]
}
package sample
import (
"bytes"
"github.com/rs/zerolog"
)
// NewDebugLogger creates a zerolog logger configured with DebugLevel writing to a buffer.
func NewDebugLogger(buf *bytes.Buffer) zerolog.Logger {
return zerolog.New(buf).Level(zerolog.DebugLevel)
}
// LogDebug writes a debug message to the logger.
func LogDebug(logger zerolog.Logger, msg string) {
logger.Debug().Msg(msg)
}
// ParseDebugLevel parses the string representation of DebugLevel.
func ParseDebugLevel(lvlStr string) (zerolog.Level, error) {
return zerolog.ParseLevel(lvlStr)
}
// IsDebugLevel checks whether the given level matches zerolog.DebugLevel.
func IsDebugLevel(lvl zerolog.Level) bool {
return lvl == zerolog.DebugLevel
}
Исходный сидер
аноним