pub struct DocumentSection {Show 13 fields
pub id: String,
pub language: String,
pub content_path: PathBuf,
pub component_id: String,
pub feed_channel: String,
pub authoring_channel: String,
pub state_dir: PathBuf,
pub lease_expiry_ms: u64,
pub journal_length_bound: u64,
pub quiesce_window_ms: u64,
pub dark_theme: bool,
pub blink_interval_ms: u64,
pub syntax_theme: Option<BTreeMap<String, String>>,
}Expand description
The [document] section (IRIDIUM-A3 R11): the document binding.
Deployment-identity fields (id, language, content_path,
component_id, feed_channel, authoring_channel, state_dir) stay
fully required — A1 constraint 9’s no-assumed-defaults law still governs
them, since each one is a genuinely deployment-specific decision with no
single “the” value. The five pure tuning/presentation knobs below
(lease_expiry_ms, journal_length_bound, quiesce_window_ms,
dark_theme, blink_interval_ms) are amended by the 2026-07-21 BINDING
ruling (the same amendment that gave syntax_theme its built-in default):
every known deployment types the identical value, so requiring the
operator to retype it is exactly the “stupid required key” the ruling
forbids. frame_authority::AuthorityConfig::declare (constraint 9’s
actual enforcement point) still receives an explicit, concrete,
non-invented value either way — the default only decides where that
value comes from when the key is absent.
Fields§
§id: StringThe bound document id ([a-z0-9-]+).
language: StringThe document language.
content_path: PathBufThe initial content source, resolved relative to the config file.
component_id: StringThe component instance id on every feed envelope ([a-z0-9-]+).
feed_channel: StringThe feed channel: the service publishes; every page subscribes.
The authoring channel: pages publish; the service subscribes.
state_dir: PathBufThe frame-state store directory, resolved relative to the config file.
lease_expiry_ms: u64Lease expiry (§5.5 policy), milliseconds. Optional — absent defaults
to DEFAULT_LEASE_EXPIRY_MS, the value every known
[document]-enabled deployment declares
(examples/code-view-console/frame.toml, matching the live deployed
demo ~/.frame-demo/code-view/frame.toml). A present-but-zero value
still refuses loudly (FrameConfig::check_document_contract).
journal_length_bound: u64The journal-length snapshot bound (T3(i) signal 3). Optional —
absent defaults to DEFAULT_JOURNAL_LENGTH_BOUND, sourced the same
way as Self::lease_expiry_ms.
quiesce_window_ms: u64The quiesce debounce window (T3(i) signal 4), milliseconds. Optional
— absent defaults to DEFAULT_QUIESCE_WINDOW_MS, sourced the same
way as Self::lease_expiry_ms.
dark_theme: boolThe publisher-seat dark-mode presentation input (C5). Optional —
absent defaults to DEFAULT_DARK_THEME, sourced the same way as
Self::lease_expiry_ms.
blink_interval_ms: u64The component’s cursor-blink interval (T4), milliseconds — a
component policy value carried by frame.toml per constraint 12 and
advertised to the page. Optional — absent defaults to
DEFAULT_BLINK_INTERVAL_MS, sourced the same way as
Self::lease_expiry_ms.
syntax_theme: Option<BTreeMap<String, String>>The publisher-seat syntax-theme presentation input (C5, amended
2026-07-21): capture-name → #rrggbb hex colour, TOML table.
Optional — when absent, crate::doc_binding::DocBinding::boot
falls back to the built-in default palette
(crate::syntax_theme::default_syntax_theme, copied from the
proven SYNTAX_THEME in examples/code-view-console/src/fake-feed.ts).
When present, this table REPLACES the built-in default WHOLESALE —
there is no per-key merging with the default (merging would invent
behaviour nobody asked for). Every declared value must be #rrggbb
hex; FrameConfig::load fails loudly on a malformed or
non-string entry rather than dropping it silently.
Trait Implementations§
Source§impl Debug for DocumentSection
impl Debug for DocumentSection
Source§impl<'de> Deserialize<'de> for DocumentSection
impl<'de> Deserialize<'de> for DocumentSection
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DocumentSection
impl RefUnwindSafe for DocumentSection
impl Send for DocumentSection
impl Sync for DocumentSection
impl Unpin for DocumentSection
impl UnsafeUnpin for DocumentSection
impl UnwindSafe for DocumentSection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request