Sanity Library Reference Docs
    Preparing search index...
    GuardRead:
        | { type: "self" }
        | { type: "now" }
        | { field: string; path?: string; type: "fieldRead" }
        | { effect: string; path?: string; type: "effectsRead" }

    A deploy-time value read on a guard's match.idRefs / metadata, typed like ValueExpr (self/now/fieldRead, plus the guard-only effectsRead for a completed effect's output). Workflow-scope only — a guard outlives any activity, so fieldRead here carries no scope. Desugar prints the STORED string spelling the deploy resolver and guard refresh parse ("$self", "$now", "$fields.<name>[.path]", "$effects['<name>'][.path]"); those spellings are single-line strings matched by anchored regexes, so a line break in a path would print an unparseable read.