Bind a slot to a property fact
Fill a slot from a known property fact, no AI.
Fill a slot from a known property fact, no AI.
The delta
Section titled “The delta”Give the slot a source: direct("<field>") instead of a produced_by — the
same pattern the starter’s headline already uses
(source: direct("address")). Model it on an AI-produced slot you want to
make fact-bound instead: swap its produced_by for source, and drop the
matching decision from fill-spec.ts.
// schema.ts — was produced_by: "blurb_text"blurb: { type: "text", size: "long", editable_by_user: true, required: true, source: direct("lot_size"), display_name: "Blurb",},Then delete the now-unused blurb_text decision from fill-spec.ts’s
decisions array — a direct()-bound slot needs none; the fact is baked in
at fill time, and the schema-invalid check
rejects a slot that declares both source and produced_by.
The same pattern works for any slot type — pick a field whose runtime shape
matches. For a number slot, source: direct("beds"); for text,
source: direct("address") or any other text-shaped field in
the closed vocabulary.
Commands
Section titled “Commands”None — this is a pure content edit. No CLI command beyond the author loop below.
Verify
Section titled “Verify”Verify with the author loop.
See also
Section titled “See also”- The closed vocabulary — every
direct()field, grouped by what it resolves against. - The schema system — the
direct()/derived()contract and why a bad name is a compile error. schema-invalid— fires if a slot declares bothsourceandproduced_by, or neither.