O_holder And O_reflector

Every non-trivial Intention Container has two Object roles.

They share the Object discipline, but they do different work.

O_holder    = accumulator
O_reflector = emitter

O_holder

O_holder preserves perception history.

When a human or system sends repeated Signals into an IC, O_holder can accumulate the relevant Pulses so the DN receives an enriched context.

Example:

username entered
password entered
submit clicked

The DN should not need to hold this hidden state internally. O_holder makes the accumulated context explicit.


Perception Modes

O_holder responds to the distinguished Pulse:

_perception_mode

Common modes:

act
resume
reset
commit

These modes let the same IC handle normal action, re-entry after interruption, purging of accumulated perception, and final commitment.


O_holder And Client Action Modes

In client-facing CPUX, O_holder is the Object that facilitates the four standard perception modes:

act
commit
resume
reset

These modes are carried by the client action Signal through the distinguished Pulse:

<"_perception_mode", Y, ["act"]>

O_holder interprets that mode before building the enriched input for the DN.

act    -> append the new perception
commit -> freeze or affirm accumulated perception for final action
resume -> replay accumulated perception from persistence
reset  -> purge accumulated perception and begin again

The DN does not need to implement the lifecycle mechanics of accumulation, replay, purge, or freeze. O_holder provides that lifecycle boundary as part of the IC.

This is especially important in ReactJS, Android, and future native GridLookout platforms because client action is not always a simple submit event. It may be a continuation, interruption recovery, cancellation, or final commitment.


O_reflector

O_reflector receives the DN result and reflects it outward.

It checks that the DN output matches the designated absorbed Signal and then emits the configured reflected Signal.

O_reflector is the outward boundary of the IC.


Why Two Objects

The separation matters.

O_holder accumulates and does not reset on every pickup.

O_reflector emits and usually resets after pickup confirmation.

Combining them too early would blur perception history and outward release.


Developer Rule

Use O_holder for accumulated perception.

Use O_reflector for reflected result.

Do not ask either Object to perform hidden computation that belongs in a Design Node.