// Package knowledge is the Knowledge port: it answers "who am I; what are my // priorities?" by loading the user's standing profile. It imports nothing from // the rest of the app, so it stays a leaf package. package knowledge import "context" // Profile is the user's standing context. Primitives only, so knowledge stays a // leaf package. type Profile struct { Text string // grounding text; "" when no profile is available Path string // resolved source location, for display } // Source answers "who am I; what are my priorities?" — the user's standing // profile that grounds the advisor. type Source interface { // Load returns the user's profile. path selects an explicit location; "" // means the adapter's configured default. A missing source is NOT an error: // it yields an empty-Text Profile so the caller degrades to ungrounded. Only // a real read failure (permissions, unreadable) returns an error. Load(ctx context.Context, path string) (Profile, error) }