MD

Dataset

canonical/dataset.md

Dataset

Purpose

Represents canonical data submitted by one architectural component to another in response to a Call.

Responsibilities

Structure

A Dataset contains:

The canonical structure is defined in dataset.json.

Fields

id

Uniquely identifies the Dataset.

type

Identifies the architectural component that produced the Dataset.

Examples include:

scope

Identifies the extent of the Dataset.

Examples include:

mode

Identifies how the Dataset is intended to be applied.

Examples include:

created

The timestamp at which the Dataset was created.

objects

The Objects contained in the Dataset.

actions

The Actions contained in the Dataset.

Every Action in a World Dataset carries an operation_invocation and a normalised
availability (state, reason); see action.md. A consumer invokes an Action through its
operation_invocation and renders its state from availability as given. It does not derive
an Action's availability from the Action's shape, and it does not treat a URL string as an
Action.

relationships

The Relationships contained in the Dataset.

collections

The Collections contained in the Dataset.

A search-style Service operation (a Call whose purpose is to find matching Objects) always
includes its own results Collection, even when nothing matched — items empty rather than the
Collection omitted — carrying a human-facing summary of what was searched and how many results
were found. A legitimately empty search is evidence about that search, not silence
indistinguishable from the Call never having run. This convention was independently adopted by
several Services (time.elonn, messages.elonn, social.elonn, maps.elonn, find.elonn) before being
written down here; it does not introduce a new Collection type (see collection.md — a
Collection's type remains Service-defined) or change any other Collection's shape.

resources

The Resources contained in the Dataset.

placements

The Placements contained in the Dataset.

findings

The Findings contained in the Dataset — the results presented in the Results pane, newest
first (see finding.md, layout.md). Each entry references one present Object or Collection
and places nothing on a layer.

findings appears on a World Dataset. World composes it: a result that is not placed and is
not content the member navigated into is a Finding. A Runtime reads this list to populate the
Results pane and does not derive Findings by any other means. A Service Dataset does not
carry Findings.

errors

The Errors produced while processing the Call.

A Dataset may contain zero or more Errors.

context

The Context associated with the Dataset.

For a World Dataset, context also carries state World owns and a Runtime does not reconstruct:

- context.objects — a map keyed by the id of an Object opened on Carry. Each entry records
that Object's title, its navigation depth, the history of prior navigation states
within that Object (capped; oldest dropped), the ids of the content currently shown inside
its container (members), and subject — the id of the one member the container has
navigated into (a conversation opened from a list), or "" when the current content has no
single subject. Navigation history belongs to the Object (see layout.md). This is what
lets world.back and world.restore step and rehydrate an Object's navigation state
without any Runtime-held history, and lets a Runtime present the subject's own controls
without inferring which member is the subject.

- context.status — the single status World resolved for this Dataset: severity (ok,
notice, or error) and the member-facing message for it. World derives this once from
the Dataset's Errors (a dependency failure that left the rest of the response intact is a
notice; anything else is an error) and from World-owned content. A Runtime renders
context.status.message and styles it by context.status.severity; it does not inspect
the Errors to decide severity or compose status copy of its own. Each Error also carries a
matching severity (see error.md).

- context.focus — object_id: the id of the one Object World considers focused for this
response (the Object it just opened, navigated within, or focused on Carry), or "" when
nothing is focused (a bare Entry search, a world.restore, a world.close). A Runtime
highlights that Object; it does not pick a focused Object of its own, and does not carry a
stale selection forward across responses.

A Runtime requests a back step with the World operation world.back, naming the target Object
in context.runtime_state.origin_object; World pops one history entry for that Object,
restores its previous navigation state, and decrements depth. world.clear removes the
Findings in the Results pane; it has no effect on Carry, Field, or Objects placed on either
layer.

A Runtime never interprets a URL string to make a navigation, availability, or structural
decision. Links are canonical references — a Resource, or a Relationship to one (see
resource.md, relationship.md) — and following one is a platform operation the reference
carries, not a Runtime parsing a string, opening a URI, or fabricating an Object from one.

Invariants

Related Models