Skip to content

Adds the Livebook inspector assembly - #34

Merged
johnnyt merged 1 commit into
mainfrom
sui-t36.8-inspector-assembly
Aug 22, 2026
Merged

Adds the Livebook inspector assembly#34
johnnyt merged 1 commit into
mainfrom
sui-t36.8-inspector-assembly

Conversation

@johnnyt

@johnnyt johnnyt commented Aug 22, 2026

Copy link
Copy Markdown
Member

Why

The sui-t36 epic's integration piece: the four panes merged over the last
milestone (configuration renderer, event log, event injection, datamodel
explorer) existed only as pure builders with no assembled surface. This
delivers the public entry point - StatifierUI.Kino.inspect/3 - and the demo
notebook that doubles as the milestone's manual acceptance test.

What

  • StatifierUI.Trace.Subscriber.attach/3 gains catch_up: true (statifier
    ADR-0049, per the bead's precondition note): the replayed prefix from
    Statifier.Replay.run/1 is folded into the buffer inside the attach call,
    atomically ordered ahead of the live suffix. {:error, :not_recorded}
    falls back to subscribe/2 with a :not_recorded diagnostic - a partial
    stream is labeled Live-only, never presented as whole.
  • StatifierUI.Inspector - the pure pane-assembly fold (active
    configuration from the newest trace.macrostep_stable, event log and
    datamodel Markdown, the status header). No Kino dependency; this is where
    the logic and the tests live.
  • StatifierUI.Kino - the thin shell, compiled only when the optional
    :kino dependency is present (ADR-0004; a stub raises otherwise). All
    processes go through Kino.start_child/1, so cell re-evaluation
    terminates them and the session's own monitor drops the dead subscriber:
    the clean detach. Injection pane wires fixture-palette buttons and a
    free-form name/payload form to EventInjection.send_draft/3.
  • notebooks/inspector.livemd - a walkable checkout-chart demo with
    numbered steps and expected observations per step.

Notes

  • Full mix quality green before push (426 tests, 92.3% coverage);
    mix gate.verify attests full scope. Gettext and Sobelow are the two
    permanently-inapplicable skips this project declares.
  • Correlation-id question (deferred here from sui-t36.6/t36.7): resolved as
    not needed for this milestone - sent/not-sent feedback plus the live log
    is adequate in a single-user notebook. A caller-supplied correlation id on
    Session.send_event/2 stays a potential engine change for a future
    embedder with exact matching needs; recorded on the bead, nothing filed.
  • Replay cost is O(run) and paid in the attaching process; the notebook
    says so where it starts the session.

Closes sui-t36.8.

StatifierUI.Kino.inspect/3 composes the four merged panes -
configuration diagram, datamodel explorer, event injection, event
log - over one shared Trace.Subscriber via Kino.Layout. Every process
it starts goes through Kino.start_child/1, so re-evaluating the cell
terminates them and the session drops the dead subscriber: the clean
detach. Compiled only when the optional :kino dependency is present
(ADR-0004); otherwise a stub raises with instructions.

Trace.Subscriber.attach/3 gains catch_up: true (statifier ADR-0049):
the subscription and the recording snapshot happen in one session
call, the replayed prefix is folded into the buffer before the live
suffix, and an unrecorded session falls back to live delivery with a
:not_recorded diagnostic the inspector surfaces as "Live-only" - a
partial stream is never presented as whole.

StatifierUI.Inspector is the pure pane-assembly fold behind the Kino
shell (active configuration from the newest trace.macrostep_stable,
pane markdown, the status header), testable without a Livebook
runtime.

notebooks/inspector.livemd drives a checkout chart end to end and
doubles as the milestone's manual acceptance test.

Refs: sui-t36.8
@johnnyt
johnnyt merged commit 3b43827 into main Aug 22, 2026
1 check passed
@johnnyt
johnnyt deleted the sui-t36.8-inspector-assembly branch August 22, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant