package stage import ( "context" "gitea.maximumdirect.net/eric/narratio/internal/app" "gitea.maximumdirect.net/eric/narratio/internal/artifacts" "gitea.maximumdirect.net/eric/narratio/internal/manifest" ) // Stage is the pipeline unit contract. type Stage interface { Name() string Run(ctx context.Context, env *app.Env, m *manifest.Manifest) (*Result, error) } // Result is the declared output of a stage execution. type Result struct { Outputs []artifacts.Ref Metadata map[string]any }