EvolvedPulse<P> class abstract interface

An immutable signal derived from a previous pulse through a transformation step — a causal link in the signal's journey.

An EvolvedPulse is what you get when you call evolve on any pulse. It carries a reference to its parent, preserving the signal's lineage without duplicating data. This is how the framework builds causal chains while keeping memory usage low.

When to use

  • Causal Traceability: You never implement this interface. It's returned by evolve. Use it when you need to trace a signal's transformation history — for debugging, auditing, or explainability.
  • Tracing a signal's journey through the reactive graph.
  • Debugging or auditing the evolution of a pulse.
  • Building causal chains for explainability (XAI).
  • Preserving provenance across transformation steps.
  • Understanding which transformations were applied to a signal.

How it works

  • Each evolved pulse links back to its parent — the pulse it came from.
  • The trace property accumulates steps from all ancestors.
  • The root always points to the original pulse that started the chain.
  • The payload is inherited from the root — evolved pulses don't duplicate it.

Non‑obvious: evolution is not mutation

EvolvedPulse is immutable. When you call evolve, you get a new pulse that points to the old one. The old pulse is still there — unchanged, available for reference — which is why you can trace the entire lineage without copying data.

Example

final root = Pulse<int>(42);
final evolved = root.evolve(step: 'validation');
print(evolved is EvolvedPulse); // true
print(evolved.parent); // root
print(evolved.trace); // ['validation']

See also:

Implemented types
Available extensions

Properties

context PulseContext
The operational tier and security authority under which this pulse propagates.
no setterinherited
first Pulse
The first element.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
isComposite bool
Indicates whether this pulse is a multi-message bundle (a collection).
no setterinherited
isEmpty bool
Whether this collection has no elements.
no setterinherited
isGoverned bool
Indicates whether this pulse is subject to explicit governance.
no setterinherited
isInvalidated bool
Indicates whether this message has reached its terminal lifecycle state.
no setterinherited
isNotEmpty bool
Whether this collection has at least one element.
no setterinherited
iterator Iterator<Pulse>
Returns an iterator over the sub‑pulses in this pulse.
no setterinherited
last Pulse
The last element.
no setterinherited
length int
The number of elements in this Iterable.
no setterinherited
parent Pulse
The immediate causal ancestor of this pulse in the processing chain.
no setter
payload → P?
The terminal data result of the evolution chain.
no setteroverride
policy PulseEphemeralPolicy?
The lifecycle governance policy for this pulse.
no setterinherited
priority int
The execution priority of this pulse (0‑100, higher = more urgent).
no setterinherited
root Pulse<P>
The primordial ancestor that initiated this pulse's causal lineage.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shell PulseShell<P, Receptor<Cell>>
Returns a Defensive Proxy of this pulse for untrusted receivers.
no setterinherited
single Pulse
Checks that this iterable has only one element, and returns that element.
no setterinherited
source Cell?
The cell that originally emitted this pulse's lineage.
no setterinherited
timestamp DateTime
The exact moment this pulse was synthesised.
no setterinherited
trace List<String>
An ordered sequence of steps documenting the signal's journey.
no setterinherited
type String?
A semantic identifier representing the category or intent of the pulse.
no setterinherited
unmodifiable Pulse<P>
Returns a read‑only projection of this pulse, ensuring structural and payload-level finality for the current propagation hop.
no setterinherited

Methods

any(bool test(Pulse element)) bool
Checks whether any element of this iterable satisfies test.
inherited
attach(dynamic context) Pulse<P>

Available on Pulse<P>, provided by the PulseExtension extension

Returns a new version of this pulse with updated context metadata.
attach(dynamic context) Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Returns a new collection of pulses, each with the provided context metadata attached.
batch() Pulse

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Aggregates multiple signals into a single, flat CollectivePulse.
cast<R>() Iterable<R>
A view of this iterable as an iterable of R instances.
inherited
cast<T>() Pulse<T>

Available on Pulse<P>, provided by the PulseExtension extension

Re-casts the pulse payload to type T while maintaining causal history.
compareTo(Pulse other) int
Compares this pulse with another to determine relative execution precedence.
inherited
contains(Object? element) bool
Whether the collection contains an element equal to element.
inherited
elementAt(int index) Pulse
Returns the indexth element.
inherited
every(bool test(Pulse element)) bool
Checks whether every element of this iterable satisfies test.
inherited
evolve({Pulse? pulse, String? step, covariant PulseContext? context}) Pulse
Creates a derived version of this pulse for the next processing stage.
inherited
expand<T>(Iterable<T> toElements(Pulse element)) Iterable<T>
Expands each element of this Iterable into zero or more elements.
inherited
firstWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The first element that satisfies the given predicate test.
inherited
flatten() Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Recursively flattens any nested CollectivePulse structures into a sequence of simple pulses.
fold<T>(T initialValue, T combine(T previousValue, Pulse element)) → T
Reduces a collection to a single value by iteratively combining each element of the collection with an existing value
inherited
followedBy(Iterable<Pulse> other) Iterable<Pulse>
Creates the lazy concatenation of this iterable and other.
inherited
forEach(void action(Pulse element)) → void
Invokes action on each element of this iterable in iteration order.
inherited
join([String separator = ""]) String
Converts each element to a String and concatenates the strings.
inherited
lastWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The last element that satisfies the given predicate test.
inherited
lineage<T>(LineageArgument arg) List<T>
Traverses the causal chain from the root ancestor to this pulse to reconstruct a historical timeline of values.
inherited
map<T>(T toElement(Pulse e)) Iterable<T>
The current elements of this iterable modified by toElement.
inherited
map<T>(T mapper(P payload)) Pulse<T>

Available on Pulse<P>, provided by the PulseExtension extension

Transforms the payload of this pulse into a new type T while preserving its causal history.
mapEach<T>(T mapper(dynamic payload)) Iterable<Pulse<T>>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Transforms the payload of every pulse in the collection while preserving their individual causal traces.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
reduce(Pulse combine(Pulse value, Pulse element)) Pulse
Reduces a collection to a single value by iteratively combining elements of the collection using the provided function.
inherited
scrutinize(covariant Receptor<Cell> receptor, List? positionalArguments, [Map<Symbol, dynamic>? namedArguments]) → dynamic
Challenges a receptor to prove it has the authority to see this pulse.
inherited
singleWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The single element that satisfies test.
inherited
skip(int count) Iterable<Pulse>
Creates an Iterable that provides all but the first count elements.
inherited
skipWhile(bool test(Pulse element)) Iterable<Pulse>
Creates an Iterable that skips leading elements while test is satisfied.
inherited
take(int count) Iterable<Pulse>
Creates a lazy iterable of the count first elements of this iterable.
inherited
takeWhile(bool test(Pulse element)) Iterable<Pulse>
Creates a lazy iterable of the leading elements satisfying test.
inherited
tap(void action(P payload)) Pulse<P>

Available on Pulse<P>, provided by the PulseExtension extension

Executes a side-effect action using the current payload and returns this pulse instance.
toList({bool growable = true}) List<Pulse>
Creates a List containing the elements of this Iterable.
inherited
toSet() Set<Pulse>
Creates a Set containing the same elements as this iterable.
inherited
toString() String
A string representation of this object.
inherited
where(bool test(Pulse element)) Iterable<Pulse>
Creates a new lazy Iterable with all elements that satisfy the predicate test.
inherited
whereType<T>() Iterable<R>
Creates a new lazy Iterable with all elements that have type T.
inherited
withStep(String step) Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Appends a diagnostic stage to the causal trace of every pulse in this collection.
withStep(String step) Pulse<P>
Appends a diagnostic stage to the pulse's causal trace without branching the causal chain.
inherited

Operators

operator +(covariant Pulse other) Pulse
Combines this pulse and other into a composite CollectivePulse.
inherited
operator ==(Object other) bool
The equality operator.
inherited