EvolvedPulseBase<P> class
abstract
The abstract base class for EvolvedPulse implementations.
An EvolvedPulseBase is the internal engine that builds causal chains. Each evolved pulse links back to its parent, preserving the signal's lineage without duplicating data. This is how the framework maintains full provenance with minimal memory overhead.
How it works
- Extends
_Pulseand implements EvolvedPulse. - Overrides
isCompositeto returntrue, marking this as a chain. - Provides the
parentgetter that returns the immediate ancestor. - Builds a flattened list of all pulses in the chain for iteration.
- The payload is inherited from the last pulse in the chain.
Non‑obvious: evolution is not mutation
When you call Pulse.evolve, you get a new pulse that points to the old one. The old pulse is still there — unchanged, available for reference. This is why you can trace the entire lineage without copying data.
Non‑obvious: payload is inherited, not copied
The payload getter returns the payload of the last pulse in the chain.
The data is inherited from the root — it's never duplicated. This is why
causal chains are memory‑efficient even when they're dozens of steps long.
Example
// You never create this directly — the framework does it for you:
final root = Pulse(42);
final evolved = root.withStep('validation');
// evolved is an EvolvedPulseBase instance
See also:
- EvolvedPulse – the public interface.
- Pulse.evolve – the method that creates evolved pulses.
- Pulse.withStep – a convenience wrapper around evolve.
- Inheritance
- Implemented types
-
- EvolvedPulse<
P>
- EvolvedPulse<
- Implementers
- Available extensions
Constructors
- EvolvedPulseBase({PulseEphemeralPolicy? policy, PulseContext? context, P? payload, String? type, DateTime? timestamp, Cell? source, String? step, int? priority, Function? onComplete, Function? onError, Function? onProgress, required PulseBase pulse, required PulseBase parent})
- Creates a new evolved pulse that extends a causal chain.
Properties
- context → PulseContext
-
Execution/security context.
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 setteroverride
- 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<
PulseBase> -
Returns an iterator over the sub‑pulses in this pulse.
no setter
- 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 setteroverride
- payload → P?
-
Main payload.
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
→ PulseBase<
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?
-
Origin cell (for tracing).
no setterinherited
- timestamp → DateTime
-
When this pulse was created.
no setterinherited
-
trace
→ List<
String> -
Causal trace path.
no setterinherited
- type → String?
-
Semantic type tag for pattern matching and routing.
no setterinherited
-
unmodifiable
→ PulseBase<
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<
Returns a new version of this pulse with updatedP> , provided by the PulseExtension extensioncontextmetadata. -
attach(
dynamic context) → Iterable< Pulse> -
Available on Iterable<
Returns a new collection of pulses, each with the providedPulse> , provided by the PulseIterableExtension extensioncontextmetadata attached. -
batch(
) → Pulse -
Available on Iterable<
Aggregates multiple signals into a single, flat CollectivePulse.Pulse> , provided by the PulseIterableExtension extension -
cast<
R> () → Iterable< R> -
A view of this iterable as an iterable of
Rinstances.inherited -
cast<
T> () → Pulse< T> -
Available on Pulse<
Re-casts the pulse payload to typeP> , provided by the PulseExtension extensionTwhile 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<
Recursively flattens any nested CollectivePulse structures into a sequence of simple pulses.Pulse> , provided by the PulseIterableExtension extension -
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
actionon 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<
Transforms the payload of this pulse into a new typeP> , provided by the PulseExtension extensionTwhile preserving its causal history. -
mapEach<
T> (T mapper(dynamic payload)) → Iterable< Pulse< T> > -
Available on Iterable<
Transforms the payload of every pulse in the collection while preserving their individual causal traces.Pulse> , provided by the PulseIterableExtension extension -
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
countelements.inherited -
skipWhile(
bool test(Pulse element)) → Iterable< Pulse> -
Creates an
Iterablethat skips leading elements whiletestis satisfied.inherited -
take(
int count) → Iterable< Pulse> -
Creates a lazy iterable of the
countfirst 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<
Executes a side-effectP> , provided by the PulseExtension extensionactionusing 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.
-
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<
Appends a diagnostic stage to the causal trace of every pulse in this collection.Pulse> , provided by the PulseIterableExtension extension -
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) → CollectivePulse -
Combines this pulse and
otherinto a composite CollectivePulse.inherited -
operator ==(
Object other) → bool -
The equality operator.
inherited