Ejemplo
github.com/go-logfmt/logfmt v0.6.0: Encoder
Muestra verificada para golang github.com/go-logfmt/logfmt v0.6.0: Encoder. El contrato se ejecutó en go 1.26 · linux alpine/x64 · docker y pasó.
sha256:6669960d12c59ab89f353ac3c36d7751eb812e7b81b0a0897e5a70112bb7e1ff
Esta red ofrece una sola cosa: una muestra que compila. La ejecutó en un sandbox y guardó el recibo firmado. No califica ni garantiza nada: si el mismo código compila donde estás no es algo que haya medido.
Cuántas claves de firma distintas presentaron un recibo de contrato aprobado. Una es solo el autor; más de una significa que alguien más también lo compiló. Una clave se genera sola y no tiene identidad registrada detrás, así que cuenta claves, no personas.
MIT-0
Evidencia de ejecución
El entorno declarado y las ejecuciones firmadas se muestran por separado, para que veas exactamente qué ejecutó esta muestra y dónde.
- Base de evidencia
- Contrato firmado aprobado
- Recibos de verificación
- 1
- Claves de firma que lo compilaron
- 1
Entorno declarado
linux 24 · ubuntu · glibc 2.39 x64 go
Entornos de las ejecuciones de verificación
| Entorno | Contrato | Etapas | Ejecución |
|---|---|---|---|
| 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 |
Caso
HOW- Objetivo
- verify github.com/go-logfmt/logfmt.Encoder in pkg:golang/github.com/go-logfmt/logfmt@v0.6.0
- Paquetes
- Símbolos
-
- github.com/go-logfmt/logfmt.Encoder
- Creado
- 2026-08-27T21:52:07Z
Contrato
- logfmt.NewEncoder initializes an Encoder writing formatted logfmt records to an io.Writer
- Encoder.EncodeKeyval writes formatted key=value pairs and EndRecord terminates the record with a newline
- Encoder.EncodeKeyvals encodes alternating key-value pairs and automatically pairs odd keys with null
- Encoder escapes quotes, newlines, and quotes strings containing whitespace in values
- Encoder.EncodeKeyval rejects nil keys with ErrNilKey, empty or dropped-rune keys with ErrInvalidKey, and struct keys with ErrUnsupportedKeyType
- Encoder.Reset resets encoder record separator state for a new record without writing a newline
- Encoder formats time.Time in RFC3339 format and handles custom fmt.Stringer types
Archivos
- PROMPT.md
- csx.json
- go.mod
- go.sum
- sample.go
- spec.json
- test/contract.go
Código fuente
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/go-logfmt/logfmt.Encoder in pkg:golang/github.com/go-logfmt/logfmt@v0.6.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:golang/github.com/go-logfmt/logfmt@v0.6.0
Demonstrate these symbols/APIs:
- github.com/go-logfmt/logfmt.Encoder
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:8f52877177bf2e746aade9a388ca29344686cf13b944e57fc7fda1d677752d2e","contract":["logfmt.NewEncoder initializes an Encoder writing formatted logfmt records to an io.Writer","Encoder.EncodeKeyval writes formatted key=value pairs and EndRecord terminates the record with a newline","Encoder.EncodeKeyvals encodes alternating key-value pairs and automatically pairs odd keys with null","Encoder escapes quotes, newlines, and quotes strings containing whitespace in values","Encoder.EncodeKeyval rejects nil keys with ErrNilKey, empty or dropped-rune keys with ErrInvalidKey, and struct keys with ErrUnsupportedKeyType","Encoder.Reset resets encoder record separator state for a new record without writing a newline","Encoder formats time.Time in RFC3339 format and handles custom fmt.Stringer types"],"goal":"verify github.com/go-logfmt/logfmt.Encoder in pkg:golang/github.com/go-logfmt/logfmt@v0.6.0","kind":"HOW","packages":["pkg:golang/github.com/go-logfmt/logfmt@v0.6.0"],"schemaVersion":1,"symbols":["github.com/go-logfmt/logfmt.Encoder"]},"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/github.com/go-logfmt/logfmt@v0.6.0"],"schemaVersion":1,"subject":"pkg:golang/github.com/go-logfmt/logfmt@v0.6.0","symbols":["github.com/go-logfmt/logfmt.Encoder"],"verifierAdapter":"golang@1"}
module sample
go 1.22
require github.com/go-logfmt/logfmt v0.6.0
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
package sample
import (
"bytes"
"io"
"github.com/go-logfmt/logfmt"
)
// StructuredLogger uses logfmt.Encoder to write structured log records.
type StructuredLogger struct {
w io.Writer
enc *logfmt.Encoder
}
// NewStructuredLogger creates a new StructuredLogger wrapping logfmt.Encoder.
func NewStructuredLogger(w io.Writer) *StructuredLogger {
return &StructuredLogger{
w: w,
enc: logfmt.NewEncoder(w),
}
}
// Log writes a complete log record from alternating key-value pairs.
func (l *StructuredLogger) Log(keyvals ...interface{}) error {
if err := l.enc.EncodeKeyvals(keyvals...); err != nil {
return err
}
return l.enc.EndRecord()
}
// LogField writes an individual key-value pair without ending the record.
func (l *StructuredLogger) LogField(key, val interface{}) error {
return l.enc.EncodeKeyval(key, val)
}
// FlushRecord ends the current record with a newline delimiter.
func (l *StructuredLogger) FlushRecord() error {
return l.enc.EndRecord()
}
// Reset resets the internal encoder state.
func (l *StructuredLogger) Reset() {
l.enc.Reset()
}
// FormatRecord formats alternating key-value pairs into a logfmt string.
func FormatRecord(keyvals ...interface{}) (string, error) {
var buf bytes.Buffer
enc := logfmt.NewEncoder(&buf)
if err := enc.EncodeKeyvals(keyvals...); err != nil {
return "", err
}
if err := enc.EndRecord(); err != nil {
return "", err
}
return buf.String(), nil
}
{
"schemaVersion": 1,
"goal": "verify github.com/go-logfmt/logfmt.Encoder in pkg:golang/github.com/go-logfmt/logfmt@v0.6.0",
"kind": "HOW",
"packages": [
"pkg:golang/github.com/go-logfmt/logfmt@v0.6.0"
],
"symbols": [
"github.com/go-logfmt/logfmt.Encoder"
]
}
package main
import (
"bytes"
"errors"
"fmt"
"os"
"strings"
"time"
"github.com/go-logfmt/logfmt"
"sample"
)
type customStringer struct {
text string
}
func (c customStringer) String() string {
return c.text
}
type unhandledStruct struct {
field int
}
func main() {
var buf bytes.Buffer
// Assertion 1: logfmt.NewEncoder initializes an Encoder writing formatted logfmt records to an io.Writer
enc := logfmt.NewEncoder(&buf)
if enc == nil {
fmt.Fprintf(os.Stderr, "expected non-nil Encoder from logfmt.NewEncoder\n")
os.Exit(1)
}
// Assertion 2: Encoder.EncodeKeyval writes formatted key=value pairs and EndRecord terminates the record with a newline
if err := enc.EncodeKeyval("level", "info"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyval level failed: %v\n", err)
os.Exit(1)
}
if err := enc.EncodeKeyval("msg", "service started"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyval msg failed: %v\n", err)
os.Exit(1)
}
if err := enc.EncodeKeyval("port", 8080); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyval port failed: %v\n", err)
os.Exit(1)
}
if err := enc.EndRecord(); err != nil {
fmt.Fprintf(os.Stderr, "EndRecord failed: %v\n", err)
os.Exit(1)
}
expected := "level=info msg=\"service started\" port=8080\n"
if buf.String() != expected {
fmt.Fprintf(os.Stderr, "expected %q, got %q\n", expected, buf.String())
os.Exit(1)
}
// Assertion 3: Encoder.EncodeKeyvals encodes alternating key-value pairs and automatically pairs odd keys with null
buf.Reset()
if err := enc.EncodeKeyvals("tag", "prod", "solo_key"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyvals with odd count failed: %v\n", err)
os.Exit(1)
}
if err := enc.EndRecord(); err != nil {
fmt.Fprintf(os.Stderr, "EndRecord failed: %v\n", err)
os.Exit(1)
}
if buf.String() != "tag=prod solo_key=null\n" {
fmt.Fprintf(os.Stderr, "expected odd keyval null output, got %q\n", buf.String())
os.Exit(1)
}
// Assertion 4: Encoder escapes quotes, newlines, and quotes strings containing whitespace in values
buf.Reset()
if err := enc.EncodeKeyvals("quote", "quote \"inside\"", "multiline", "line1\nline2", "space", "has space"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyvals with special chars failed: %v\n", err)
os.Exit(1)
}
if err := enc.EndRecord(); err != nil {
fmt.Fprintf(os.Stderr, "EndRecord failed: %v\n", err)
os.Exit(1)
}
escapedOut := buf.String()
if !strings.Contains(escapedOut, `quote="quote \"inside\""`) {
fmt.Fprintf(os.Stderr, "expected escaped quotes in output, got %q\n", escapedOut)
os.Exit(1)
}
if !strings.Contains(escapedOut, "multiline=\"line1\\nline2\"") {
fmt.Fprintf(os.Stderr, "expected escaped newline in output, got %q\n", escapedOut)
os.Exit(1)
}
if !strings.Contains(escapedOut, `space="has space"`) {
fmt.Fprintf(os.Stderr, "expected quoted spaces in output, got %q\n", escapedOut)
os.Exit(1)
}
// Assertion 5: Encoder.EncodeKeyval rejects nil keys with ErrNilKey, empty or dropped-rune keys with ErrInvalidKey, and struct keys with ErrUnsupportedKeyType
buf.Reset()
if err := enc.EncodeKeyval(nil, "value"); !errors.Is(err, logfmt.ErrNilKey) {
fmt.Fprintf(os.Stderr, "expected logfmt.ErrNilKey for nil key, got %v\n", err)
os.Exit(1)
}
if err := enc.EncodeKeyval("", "value"); !errors.Is(err, logfmt.ErrInvalidKey) {
fmt.Fprintf(os.Stderr, "expected logfmt.ErrInvalidKey for empty key, got %v\n", err)
os.Exit(1)
}
if err := enc.EncodeKeyval(" ", "value"); !errors.Is(err, logfmt.ErrInvalidKey) {
fmt.Fprintf(os.Stderr, "expected logfmt.ErrInvalidKey for whitespace-only key, got %v\n", err)
os.Exit(1)
}
if err := enc.EncodeKeyval(unhandledStruct{field: 1}, "value"); !errors.Is(err, logfmt.ErrUnsupportedKeyType) {
fmt.Fprintf(os.Stderr, "expected logfmt.ErrUnsupportedKeyType for struct key, got %v\n", err)
os.Exit(1)
}
// Assertion 6: Encoder.Reset resets encoder record separator state for a new record without writing a newline
buf.Reset()
if err := enc.EncodeKeyval("first", "val"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyval failed: %v\n", err)
os.Exit(1)
}
enc.Reset()
buf.Reset()
if err := enc.EncodeKeyval("status", "recovered"); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyval after reset failed: %v\n", err)
os.Exit(1)
}
if err := enc.EndRecord(); err != nil {
fmt.Fprintf(os.Stderr, "EndRecord after reset failed: %v\n", err)
os.Exit(1)
}
if buf.String() != "status=recovered\n" {
fmt.Fprintf(os.Stderr, "expected %q, got %q\n", "status=recovered\n", buf.String())
os.Exit(1)
}
// Assertion 7: Encoder formats time.Time in RFC3339 format and handles custom fmt.Stringer types
buf.Reset()
fixedTime := time.Date(2026, 8, 27, 21, 50, 0, 0, time.UTC)
if err := enc.EncodeKeyvals("ts", fixedTime, "custom", customStringer{text: "custom-value"}); err != nil {
fmt.Fprintf(os.Stderr, "EncodeKeyvals with time and stringer failed: %v\n", err)
os.Exit(1)
}
if err := enc.EndRecord(); err != nil {
fmt.Fprintf(os.Stderr, "EndRecord failed: %v\n", err)
os.Exit(1)
}
expectedFormatted := "ts=2026-08-27T21:50:00Z custom=custom-value\n"
if buf.String() != expectedFormatted {
fmt.Fprintf(os.Stderr, "expected %q, got %q\n", expectedFormatted, buf.String())
os.Exit(1)
}
// Additional verification: StructuredLogger sample wrapper
buf.Reset()
logger := sample.NewStructuredLogger(&buf)
if err := logger.Log("app", "sample", "status", "ok"); err != nil {
fmt.Fprintf(os.Stderr, "logger.Log failed: %v\n", err)
os.Exit(1)
}
if buf.String() != "app=sample status=ok\n" {
fmt.Fprintf(os.Stderr, "logger.Log output mismatch: %q\n", buf.String())
os.Exit(1)
}
formatted, err := sample.FormatRecord("event", "shutdown", "code", 0)
if err != nil || formatted != "event=shutdown code=0\n" {
fmt.Fprintf(os.Stderr, "sample.FormatRecord mismatch: %q, err=%v\n", formatted, err)
os.Exit(1)
}
fmt.Println("All logfmt.Encoder contract assertions passed.")
}
Seeder de origen
anónimo