loop

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package loop defines the intermediate representation for AI development loop systems: cycles of human-gated AI work such as the ProductBuildersHQ two-loop system (Product Loop + Builder Loop) and single-loop reference systems like AWS AI-DLC.

A System contains one or more Loops. Each Loop is an ordered cycle of Stations (the last station feeds back to the first). Stations may be gates — approval checkpoints whose authority (human vs. policy) shifts with a team's autonomy level — and may map to spec types, definition workflows, or execution integrations from the rest of this library, letting consumers render a loop as the organizing geography of the catalog.

Seams connect stations across loops (e.g., the Product Loop's Approve station hands the Product Baseline to the Builder Loop's Accept station). This package holds declarative data only; consumers (the website, VisionStudio) render and act on it.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Actor

type Actor string

Actor identifies who performs a station's work.

const (
	// ActorHuman means the station is performed by people.
	ActorHuman Actor = "human"

	// ActorAI means the station is performed by AI (agents, models).
	ActorAI Actor = "ai"

	// ActorHumanAI means the station is collaborative.
	ActorHumanAI Actor = "human+ai"
)

type GateAuthority

type GateAuthority string

GateAuthority identifies who holds a gate's approval authority by default.

const (
	// AuthorityHuman means a person must approve.
	AuthorityHuman GateAuthority = "human"

	// AuthorityPolicy means policy-governed automation may approve.
	AuthorityPolicy GateAuthority = "policy"
)

type Loop

type Loop struct {
	// ID is the loop identifier, unique within the system (e.g., "product").
	ID string `json:"id" yaml:"id" jsonschema:"required,description=Loop identifier (unique within the system)"`

	// Name is the human-readable name (e.g., "Product Loop").
	Name string `json:"name" yaml:"name" jsonschema:"required,description=Loop name"`

	// Owner is the accountable role (e.g., "Product person", "Builder").
	Owner string `json:"owner,omitempty" yaml:"owner,omitempty" jsonschema:"description=Accountable role"`

	// Question is the loop's verification question (e.g., "Right thing?").
	Question string `json:"question,omitempty" yaml:"question,omitempty" jsonschema:"description=The loop's verification question"`

	// Description explains the loop.
	Description string `json:"description,omitempty" yaml:"description,omitempty" jsonschema:"description=Loop purpose"`

	// Stations are the ordered steps; the last cycles back to the first.
	Stations []Station `json:"stations" yaml:"stations" jsonschema:"required,description=Ordered stations (last cycles back to first)"`
}

Loop is one cycle of stations. The final station feeds back to the first.

type Seam

type Seam struct {
	// From is the source station reference as "loopID.stationID".
	From string `json:"from" yaml:"from" jsonschema:"required,description=Source station as loopID.stationID"`

	// To is the destination station reference as "loopID.stationID".
	To string `json:"to" yaml:"to" jsonschema:"required,description=Destination station as loopID.stationID"`

	// Artifact names what crosses the seam (e.g., "Product Baseline").
	Artifact string `json:"artifact,omitempty" yaml:"artifact,omitempty" jsonschema:"description=What crosses the seam"`

	// Description explains the seam.
	Description string `json:"description,omitempty" yaml:"description,omitempty" jsonschema:"description=Seam explanation"`
}

Seam connects a station in one loop to a station in another.

type Station

type Station struct {
	// ID is the station identifier, unique within the loop (e.g., "define").
	ID string `json:"id" yaml:"id" jsonschema:"required,description=Station identifier (unique within the loop)"`

	// Name is the human-readable name (e.g., "Define").
	Name string `json:"name" yaml:"name" jsonschema:"required,description=Station name"`

	// Actor performs the station's work.
	Actor Actor `json:"actor" yaml:"actor" jsonschema:"required,enum=human,enum=ai,enum=human+ai"`

	// Description explains the station.
	Description string `json:"description,omitempty" yaml:"description,omitempty" jsonschema:"description=Station purpose"`

	// Gate marks this station as an approval checkpoint.
	Gate bool `json:"gate,omitempty" yaml:"gate,omitempty" jsonschema:"description=True if this station is an approval checkpoint"`

	// GateAuthority is the default approval authority when Gate is true.
	GateAuthority GateAuthority `` /* 156-byte string literal not displayed */

	// AutonomyNote describes how the station changes as autonomy (ASDM level)
	// rises (e.g., "human at L5 and below; policy-gated at L6+").
	AutonomyNote string `` /* 128-byte string literal not displayed */

	// SpecTypes lists spec type IDs produced or consumed at this station.
	SpecTypes []string `json:"spec_types,omitempty" yaml:"spec_types,omitempty" jsonschema:"description=Spec type IDs produced or consumed here"`

	// Workflows lists definition workflow names that operate at this station.
	Workflows []string `` /* 127-byte string literal not displayed */

	// Integrations lists execution integration IDs that operate at this station.
	Integrations []string `` /* 133-byte string literal not displayed */
}

Station is one step in a loop.

type System

type System struct {
	// ID is the canonical identifier (e.g., "pbhq-two-loop", "aws-ai-dlc").
	ID string `json:"id" yaml:"id" jsonschema:"required,description=Canonical identifier for the loop system"`

	// Name is the human-readable name.
	Name string `json:"name" yaml:"name" jsonschema:"required,description=Human-readable name"`

	// Vendor is the defining organization (e.g., "ProductBuildersHQ", "AWS").
	Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty" jsonschema:"description=Defining organization"`

	// Description explains the system.
	Description string `json:"description,omitempty" yaml:"description,omitempty" jsonschema:"description=System purpose and scope"`

	// Reference is a URL to canonical documentation.
	Reference string `json:"reference,omitempty" yaml:"reference,omitempty" jsonschema:"format=uri,description=Documentation URL"`

	// Loops are the cycles in this system, outermost first.
	Loops []Loop `json:"loops" yaml:"loops" jsonschema:"required,description=Cycles in this system (outermost first)"`

	// Seams connect stations across loops.
	Seams []Seam `json:"seams,omitempty" yaml:"seams,omitempty" jsonschema:"description=Cross-loop connections"`
}

System is a complete loop system.

func ParseYAML

func ParseYAML(data []byte) (*System, error)

ParseYAML parses a System from YAML bytes.

func (*System) Validate

func (s *System) Validate() error

Validate checks required fields and referential integrity.

Jump to

Keyboard shortcuts

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