Expand description
engine_observables_api — the common-minimum query traits every
Hekate render lane (Nematic / Serval / Scrying) publishes for
downstream consumers (mere-host, Apparatus inspector, Hekate
indexing/extract pipeline).
See docs/2026-05-17_hekate_lanes_observables.md for the design. The “raw plane storage stays implementation detail of each lane; the permanent ABI is these query traits” framing is load-bearing — internal plane shapes can evolve, the trait surface here is what consumers depend on.
§Modules
semantic— common semantic facts (title, headings, links, anchors) + engine-specific extensions (HTML / Nematic / feed).fragment— laid-out geometry queries (hit-test, box-model, anchor → fragments, selection rects).interaction— focus, selection, affordances at a point, activation target lookup.loading— request/response state, redirects, MIME, TLS, cache origin, errors.
Each trait carries a generation_id() -> u64 epoch (or its
equivalent) so consumers can cache against it: the value rolls
whenever the underlying plane regenerates.
Re-exports§
pub use fragment::*;pub use interaction::*;pub use loading::*;pub use quiescence::*;pub use semantic::*;pub use stats::*;pub use types::*;
Modules§
- fragment
- Laid-out geometry queries — hit-testing, box-model lookup, anchor-to-fragments, selection rects.
- interaction
- Focus, selection, input affordances, activation targets. The bridge between observable geometry and user input.
- loading
- Request/response state for the active session — redirects, MIME, TLS summary, cache origin, errors.
- quiescence
- Quiescence: the report a surface makes of its pending work, and the default policy for “settled”.
- semantic
- Common semantic facts every lane that has a document publishes — plus engine-specific extensions for richer protocol-native shape.
- stats
- Arena/table stats shared across engine lanes.
- types
- Cross-cutting supporting types shared across the four query traits. Kept minimal — promote types here only when more than one trait module needs them.