Capability handed to inspect and watchInspect.
Closes #257 (capability narrowing across factory/selector seams):
the inspector reads explanation lineage, subscribes to its updates,
and stamps each view with graph.now. Those four methods —
read, explain, subscribe, now — are the entire surface.
commit, input, derived, hydrate, snapshot, exportModel,
subscribeCommits, commitLog, readAt/snapshotAt are
intentionally unreachable: an inspector
that can mutate the engine ceases to be inspection and becomes a
parallel writer, breaking the "engine is inspectable through its
own primitives, not a parallel devtools system" commitment.
Narrowing is type-level. A real Graph is still assignable, so
call sites keep working; the discipline is enforced at compile time
inside the inspector implementation.
Capability handed to inspect and watchInspect. Closes #257 (capability narrowing across factory/selector seams): the inspector reads explanation lineage, subscribes to its updates, and stamps each view with
graph.now. Those four methods —read,explain,subscribe,now— are the entire surface.commit,input,derived,hydrate,snapshot,exportModel,subscribeCommits,commitLog,readAt/snapshotAtare intentionally unreachable: an inspector that can mutate the engine ceases to be inspection and becomes a parallel writer, breaking the "engine is inspectable through its own primitives, not a parallel devtools system" commitment.Narrowing is type-level. A real
Graphis still assignable, so call sites keep working; the discipline is enforced at compile time inside the inspector implementation.