package artifacts import "os" // Ref identifies a pipeline artifact and its local/remote coordinates. type Ref struct { Kind string Category string SessionID string RelativePath string AbsolutePath string RemoteKey string Checksum string } // Store is the local artifact/workdir abstraction used by orchestration code. type Store interface { SessionPaths(sessionID string) SessionPaths SessionPathsFor(campaign, sessionID string) SessionPaths ResolveSessionPathsFor(campaign, sessionID string) (SessionPaths, error) EnsureLayout(sessionID string) (SessionPaths, error) EnsureLayoutFor(campaign, sessionID string) (SessionPaths, error) CopyInput(sessionID, srcPath, destRelativePath string) (Ref, error) CopyInputFor(campaign, sessionID, srcPath, destRelativePath string) (Ref, error) Exists(path string) (bool, error) ExistsRef(ref Ref) (bool, error) WriteFileAtomic(path string, data []byte, perm os.FileMode) error Checksum(path string) (string, error) AcquireSessionLock(sessionID string) (*LockHandle, error) AcquireSessionLockFor(campaign, sessionID string) (*LockHandle, error) ReleaseSessionLock(lock *LockHandle) error }