Package-level declarations
Types
The events query model of an aggregate type on the unified engine (revising): a DefaultQueryGateway over the type's events backend, admitted against the schema schemaProvider compiles (me.ahoo.wow.query.schema.EventsQuerySchemas), under the same filters, policies, observers, budgets and count cache as its snapshots.
The records of the events model: a stream as stored, and how the gateway reads one.
Whether an events query that does not pin its aggregates runs: on a PostgreSQL or MongoDB log the indexes are the write store's and those of the access attributes, so a query that names no aggregateId scans the aggregate type's log, on the store the appends write to, unless an access policy's filter reads those. Such queries are a capability the log backends declare, so they run by default (ALLOW), bounded by the entry's budget, the store's QueryBulkhead and its read source; a deployment that wants none of them on its write store opts in to REFUSE, per store or per aggregate type (wow.query.events.unpinned, wow.stores.<name>.query.events.unpinned, wow.aggregates.[<context>.<aggregate>].query.events.unpinned).
The UnpinnedEvents.REFUSE rule as a step of the policy chain: an events query whose filter names no aggregate is rejected STORAGE_UNSUPPORTED on aggregateId; one that names them is not restricted further. It runs right after the caller's scope (ScopeQueryPolicy), before the events' visibility, so a query it refuses reads nothing.