Expand description
Init-time scope fixture and cycle-time pull plan.
Implements SRD 32 §“Init-Time Fixture and Consumer Self-
Registration”. Each op-template consumer (validation,
conditional, throttle, …) registers the Polydat names it will read
at cycle time into a shared ScopeFixture. The fixture is
sealed once construction completes and yields a PullPlan
whose entries are materialized per cycle into a ResolvedPulls
buffer indexed by the PullHandles the consumer received at
registration.
This is the only path by which wrappers gain access to GK
values at cycle time (SRD 31 §“Pull plan vs bind plan”). The
prior side channel — wrapper names threaded through
synthesis::resolve_with_extras into ResolvedFields — has
been removed; the resolver now exposes resolve_with_field_pulls,
which carries op-field bind points only (the adapter-facing
read).
Structs§
- ExecCtx
- Cycle-time bundle handed to every dispenser via
OpDispenser::execute. Adapters usefieldsexclusively; wrappers readpullsvia stored handles. - Pull
Handle - Opaque, copy-able handle into a
PullPlan. The only way to turn a handle into a value isResolvedPulls::get. - Pull
Plan - Sealed init-time plan. One entry per unique name registered.
Owns an
Arc<PolydatProgram>so cycle-time resolve only needs the per-fiber state. - Resolved
Pulls - Cycle-time materialization of a
PullPlan. - Scope
Fixture - Init-time accumulator for consumer-declared pulls.
Traits§
- OpConsumer
- Trait every cross-cutting wrapper that reads Polydat values must
implement. The activity construction loop calls
fixtureonce per template per consumer; failures (closed-vocab violation, missing required field, unresolvable name) are returned asErrand abort construction loudly.