usecasecatalog

package
v0.42.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UseCaseSchema       = "stackkits-use-case-catalog/v1"
	EvidenceSchema      = "stackkits-use-case-evidence/v1"
	CompatibilitySchema = "stackkits-compatibility/v1"
)

Variables

This section is empty.

Functions

func DiscoverRepoRoot

func DiscoverRepoRoot(start string) (string, error)

func Generate

func Generate(repoRoot string, release ReleaseIdentity, generatorVersion string) (UseCaseManifest, CompatibilityManifest, []InternalUseCase, error)

func GenerateWithPassedTests

func GenerateWithPassedTests(repoRoot string, release ReleaseIdentity, generatorVersion string) (UseCaseManifest, CompatibilityManifest, []InternalUseCase, error)

func GenerateWithReceipt

func GenerateWithReceipt(repoRoot string, release ReleaseIdentity, generatorVersion string, receipt *TestReceipt) (UseCaseManifest, CompatibilityManifest, []InternalUseCase, error)

func MarshalCanonical added in v0.42.0

func MarshalCanonical(document any) ([]byte, error)

MarshalCanonical encodes a decoded document the way JavaScript consumers recompute contentDigest (JSON.stringify with sorted keys): encoding/json sorts map keys, but its default HTML escaping of &, < and > would make any title such as "Documents & Files" fail their digest check.

func RenderInternalMarkdown

func RenderInternalMarkdown(entries []InternalUseCase) string

func WriteJSON

func WriteJSON(path string, value any) error

Types

type ApplicationDelivery

type ApplicationDelivery struct {
	// Native authoring binds the catalog's default implementation to the
	// module whose explicit profiles must accompany a selected workload.
	DefaultAlternativeRef string               `json:"defaultAlternativeRef,omitempty"`
	DefaultModuleRef      string               `json:"defaultModuleRef,omitempty"`
	UseCaseRef            string               `json:"useCaseRef"`
	WorkloadRef           string               `json:"workloadRef"`
	AdapterRef            string               `json:"adapterRef"`
	AdapterName           string               `json:"adapterName"`
	Status                string               `json:"status"`
	Capabilities          DeliveryCapabilities `json:"capabilities"`
}

type AuthoringAlternative

type AuthoringAlternative struct {
	ID      string            `json:"id"`
	Name    string            `json:"name"`
	Modules []AuthoringModule `json:"modules"`
}

type AuthoringModule

type AuthoringModule struct {
	ID              string   `json:"id"`
	ComputeProfiles []string `json:"computeProfiles"`
}

type AuthoringWorkload

type AuthoringWorkload struct {
	ID                 string                 `json:"id"`
	DefaultAlternative string                 `json:"defaultAlternative"`
	Alternatives       []AuthoringAlternative `json:"alternatives"`
}

type CompatibilityManifest

type CompatibilityManifest struct {
	SchemaVersion    string          `json:"schemaVersion"`
	Release          ReleaseIdentity `json:"release"`
	GeneratedAt      string          `json:"generatedAt"`
	GeneratorVersion string          `json:"generatorVersion"`
	Compatibility    struct {
		OS                  []OSCompatibility     `json:"os"`
		ApplicationDelivery []ApplicationDelivery `json:"applicationDelivery"`
	} `json:"compatibility"`
	ContentDigest string `json:"contentDigest"`
}

type Component

type Component struct {
	ID   string `json:"id"`
	Name string `json:"name"`
	Role string `json:"role"`
	Kind string `json:"kind"`
}

type DeliveryCapabilities

type DeliveryCapabilities struct {
	Deployment     bool `json:"deployment"`
	RouteTLS       bool `json:"routeTLS"`
	StatusEvidence bool `json:"statusEvidence"`
	BackupRestore  bool `json:"backupRestore"`
}

type EvidenceManifest

type EvidenceManifest struct {
	SchemaVersion    string            `json:"schemaVersion"`
	SourceSHA        string            `json:"sourceSha"`
	GeneratedAt      string            `json:"generatedAt"`
	GeneratorVersion string            `json:"generatorVersion"`
	UseCases         []InternalUseCase `json:"useCases"`
	ContentDigest    string            `json:"contentDigest"`
}

func NewEvidenceManifest

func NewEvidenceManifest(sourceSHA, generatedAt, generatorVersion string, entries []InternalUseCase) (EvidenceManifest, error)

type Gate

type Gate struct {
	ID         string   `json:"id"`
	Status     string   `json:"status"`
	ReasonCode string   `json:"reasonCode"`
	Detail     string   `json:"detail"`
	Sources    []string `json:"sources"`
}

type InternalUseCase

type InternalUseCase struct {
	UseCase
	Gates []Gate `json:"gates"`
}

type MainUseCase added in v0.42.0

type MainUseCase struct {
	ID    string `json:"id"`
	Title string `json:"title"`
}

MainUseCase is the owner-accepted main use case a catalog entry is grouped under; CUE constrains the id and derives the title.

type OSCompatibility

type OSCompatibility struct {
	ID           string `json:"id"`
	Name         string `json:"name"`
	Version      string `json:"version"`
	Architecture string `json:"architecture"`
	Status       string `json:"status"`
	Reason       string `json:"reason,omitempty"`
	EvidenceRef  string `json:"evidenceRef,omitempty"`
}

type ReleaseIdentity

type ReleaseIdentity struct {
	Tag             string `json:"tag"`
	Version         string `json:"version"`
	SourceSHA       string `json:"sourceSha"`
	PublicSourceSHA string `json:"publicSourceSha"`
	ReleaseURL      string `json:"releaseUrl"`
}

type RuntimeEvidenceReceipt

type RuntimeEvidenceReceipt struct {
	SchemaVersion string `json:"schemaVersion"`
	SourceSHA     string `json:"sourceSha"`
	UseCases      []struct {
		UseCaseRef  string `json:"useCaseRef"`
		Status      string `json:"status"`
		EvidenceRef string `json:"evidenceRef"`
	} `json:"useCases"`
}

type Setting

type Setting struct {
	ID          string          `json:"id"`
	Name        string          `json:"name"`
	Kind        string          `json:"kind"`
	Group       string          `json:"group"`
	Depth       string          `json:"depth"`
	Help        string          `json:"help,omitempty"`
	Options     []SettingOption `json:"options,omitempty"`
	Default     any             `json:"default"`
	Placeholder string          `json:"placeholder,omitempty"`
	Realization string          `json:"realization"`
}

Setting is a decision an operator makes about a use case before install; the projection of foundation.#UseCaseSetting. `Default` is a string for choice and text settings and a bool for toggles, exactly as declared.

type SettingOption

type SettingOption struct {
	ID   string `json:"id"`
	Name string `json:"name"`
	Note string `json:"note,omitempty"`
}

SettingOption is one choice of a choice-kind setting.

type TestReceipt

type TestReceipt struct {
	SchemaVersion string   `json:"schemaVersion"`
	SourceSHA     string   `json:"sourceSha"`
	Status        string   `json:"status"`
	UseCaseRefs   []string `json:"useCaseRefs"`
}

func NewTestReceipt

func NewTestReceipt(sourceSHA string, useCases []UseCase) (TestReceipt, error)

type UseCase

type UseCase struct {
	ID                 string                           `json:"id"`
	Title              string                           `json:"title"`
	Description        string                           `json:"description"`
	Components         []Component                      `json:"components"`
	MainUseCase        MainUseCase                      `json:"mainUseCase"`
	ComputeTiers       map[string]UseCaseComputeTierFit `json:"computeTiers,omitempty"`
	Settings           []Setting                        `json:"settings,omitempty"`
	Docs               string                           `json:"docs,omitempty"`
	DefaultAlternative string                           `json:"defaultAlternative,omitempty"`
	Alternatives       []AuthoringAlternative           `json:"alternatives,omitempty"`
}

func LoadUseCaseComputeTiers

func LoadUseCaseComputeTiers(repoRoot string) ([]UseCase, error)

LoadUseCaseComputeTiers returns package compute-tier fits for Unifier/MCP.

type UseCaseComputeTierFit

type UseCaseComputeTierFit struct {
	Included   bool         `json:"included"`
	Functions  []string     `json:"functions,omitempty"`
	Load       *UseCaseLoad `json:"load,omitempty"`
	ModuleSlug string       `json:"moduleSlug,omitempty"`
	Reason     string       `json:"reason,omitempty"`
	Notes      []string     `json:"notes,omitempty"`
}

UseCaseComputeTierFit is the Unifier-readable surface of one package on one install.computeTier graph. Apply does not read it.

type UseCaseLoad

type UseCaseLoad struct {
	Residency string `json:"residency"`
	Baseline  string `json:"baseline"`
	Burst     string `json:"burst"`
}

type UseCaseManifest

type UseCaseManifest struct {
	SchemaVersion    string          `json:"schemaVersion"`
	Release          ReleaseIdentity `json:"release"`
	GeneratedAt      string          `json:"generatedAt"`
	GeneratorVersion string          `json:"generatorVersion"`
	Catalog          struct {
		UseCases []UseCase           `json:"useCases"`
		KitCores []AuthoringWorkload `json:"kitCores,omitempty"`
	} `json:"catalog"`
	ContentDigest string `json:"contentDigest"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL