The delivery repository's contracts and SDK live under modules/ as mesh-delivery-contracts and mesh-delivery-sdk, their Go module paths renamed to match the folders (the TypeScript names already did), and every importer in mesh-delivery, mesh-catalog, mesh-host, mesh-tools and mesh-sdk follows in the same group: a design as it should be, one path per module, checked by the group's check building every importer. Builds: design 47 G §427, §88 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
23 lines
926 B
Go
23 lines
926 B
Go
// Package buildstep is what both build modules share: the runner of a long step that answers a tool call at once
|
|
// and ends on its key in the module's `steps` state (novox/hq ADR 0469 §2; issue 1471), the toolchain guard
|
|
// (issue 1473), the fetch of one commit over SSH (issue 1474), and the failure contract of a test level with the parsers
|
|
// of go test -json and node --test's TAP that fill it (failure.go, issue 1901; its conformance kit is package conformance).
|
|
package buildstep
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var now = time.Now
|
|
|
|
// NewID is a step id: the time in milliseconds in base 36 and six random hex digits, lower-case letters and
|
|
// digits only, so it is one key token and differs between two steps of one node even in one millisecond.
|
|
func NewID() string {
|
|
var b [3]byte
|
|
_, _ = rand.Read(b[:])
|
|
return strconv.FormatInt(now().UnixMilli(), 36) + hex.EncodeToString(b[:])
|
|
}
|