Dataset
Purpose
Represents canonical data submitted by one architectural component to another in response to a Call.
Responsibilities
- Provide a canonical representation of a Dataset.
Structure
A Dataset contains:
- id
- type
- scope
- mode
- created
- objects
- actions
- relationships
- collections
- resources
- placements
- findings
- errors
- context
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:
- mind
- world
- runtime
scope
Identifies the extent of the Dataset.
Examples include:
- full
- object
- collection
mode
Identifies how the Dataset is intended to be applied.
Examples include:
- snapshot
- update
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
- Every Dataset has a unique identifier.
- Every Dataset has a single type.
- Every Dataset has a single scope.
- Every Dataset has a single mode.
- Every Dataset has a creation timestamp.
- Datasets are immutable. Once created, a Dataset is never modified. Any change is represented by a new Dataset with its own identifier and creation timestamp.
- Every processed Call produces exactly one Dataset.
- A Dataset may contain successful results, Errors, or both.
- A Dataset is the only canonical response payload exchanged across component boundaries.
Related Models
- Call
- Context
- Error
- Object
- Action
- Relationship
- Collection
- Resource
- Placement
- Finding