cadrumo.entrypoints.tui.modelo.view.provenance module¶
The modelo.workspace.provenance read destination.
Flat bounded attribution: one row per contributing source the producer recorded, showing which subject it fed when it named one.
NO CAUSAL EXPANSION. ModeloWorkspaceProvenanceRecordV1 is
(subject | None, calculation_source) and carries no depth, no parent
link and no cycle marker. A screen that arranged these rows into a tree, or
labelled any of them by depth, would author a causal claim no producer
made. The rows are an attribution list, and this destination presents them
as one.
An unattributed row is shown, never dropped. subject is None when
the underlying CalculationSourceRef names no casilla, which is the
common case today; the producer deliberately emits exactly one record for
such a ref rather than zero, so an audit reader sees every contributing
source. Hiding those rows here would undo that at the last step.
Paging is the NORMAL case, not the exception. One source reference fans out to one record per casilla it names, so this facet can overflow without the revision growing at all – and row count therefore tells an operator nothing about completeness. The boundedness notice is the only thing that does.
Each row names the subject and the source it came from; the resolver that read the source is a raw identifier and sits in a collapsed technical-details group, row for row.
The per-value provenance nested on materialization records is NOT read here, and not because this destination prefers the facet: that nested field is never populated by any producer, so a screen drawing on it would render permanently empty lists. The facet is the only populated provenance surface.
- class ModeloWorkspaceProvenanceScreen(session, *, id=None)[source]¶
Bases:
TypedAppAccess,AccountChromeScreenFlat attribution rows for the current session, or an explicit not-applicable.
- Parameters:
session (ModeloWorkspaceReadSession)
id (str | None)
- BINDINGS: ClassVar¶
A list of key bindings.
- compose()[source]¶
Called by Textual to create child widgets.
This method is called when a widget is mounted or by setting recompose=True when calling [refresh()][textual.widget.Widget.refresh].
Note that you don’t typically need to explicitly call this method.
Example
def compose(self) -> ComposeResult: yield Header() yield Label("Press the button below:") yield Button() yield Footer()
- on_mount()[source]¶
Refuse when the admission carries no provenance, otherwise render the rows.
- Return type:
- action_quit_provenance()[source]¶
Leave the destination without returning a value; this screen decides nothing.
- Return type:
- can_focus: bool¶
Widget may receive focus.
- can_focus_children: bool¶
Widget’s children may receive focus.