namespace AIStudio.Models;
///
/// Where the statements about a model were read, and when somebody last looked.
///
///
/// Model cards change without telling anybody. A vendor adds tool calling to a checkpoint, raises a
/// context window, or quietly stops offering an API, and the rule written from the old page keeps
/// answering as if nothing happened. Naming the page and the day it was read is what turns "this is
/// what the rules say" into something a person can check in a minute.
///
/// This is not optional: a family has to state it, and the compiler asks for it. The verification
/// run reports the ones which have gone stale.
///
/// The page the statements were read from.
/// The day somebody last read it.
/// What that page actually said, in a sentence, so a reader knows what to look for.
public sealed record ModelSource(string Url, DateOnly CheckedOn, string Note)
{
///
/// Whether this source names a page and a day.
///
///
/// The compiler can insist that a family states a source; it cannot insist that the source says
/// anything. This is what the verification run asks.
///
public bool IsStated => !string.IsNullOrWhiteSpace(this.Url) && this.CheckedOn != default;
}