Prepared descriptions help an agent start quickly. Retaining old click references inside them would also make a convenience cache an entry to stale actions. I removed action references from passive reading results and required current target resolution before actual operations.

Retain descriptions rather than an action ticket

PagePreparation copies observation elements while excluding ref. The retained PageView can still describe names, roles and states, but it does not supply a reference for an immediate click from that cached object.

A reference is not literally an authorization certificate: actions still pass work-scope and host checks. It is nevertheless an action-oriented identifier connected to a real node, so it needs a shorter lifetime than descriptive material. A reason to retain reading data must not become a reason to bypass execution checks.

Separate passive preparation from action observation

The host supplies a passive driver for preparation, distinct from action-oriented observation. It uses fixed revision-tracking code and releases corresponding state on eviction. Passive preparation is not intended to replace the current reference set for an actual task.

Merging lifetimes merely because both read the same page obscures which snapshot supports an operation. Identical descriptions can belong to different documents or nodes. A reuse contract should identify what is deliberately not reused as well as what is retained.

Check currentness when reading the cache too

Peek checks dormancy, loading, document epoch, destination and current revision. Changed content schedules another preparation instead of returning an old view. Read-only material still has a freshness requirement.

That check and fresh action observation serve different purposes. The page can change after peek succeeds. Cache freshness cannot replace checks of node existence, occlusion, document identity and snapshot at dispatch time. Descriptive currentness and action-time validity remain separate conditions.

Test the removed field in the actual returned value

The unit test puts a synthetic secret-ref into its observation. After preparation it checks that serializing peek's result cannot reveal that value while the body remains available. It verifies exclusion in the returned data rather than relying on documentation alone.

Creating new element descriptions also avoids deleting fields from a shared action observation. Mutating the original object could break another consumer. I compared the current copying code with this test, without extracting references from a live user tab or dispatching new clicks.

Removing references is not universal content anonymization

Excluding ref does not establish that every input value or sensitive page detail has been anonymized. General input protection and site-specific editable-content reading have their own observation contracts. The passive-copy step needs to be described precisely as removing that particular field.

Exporting or publishing material still requires review of body text and service-specific descriptors. An internal reading cache is not a public-content privacy reviewer. Accurately limiting one protection preserves the next layer's responsibility and makes reuse safer to reason about.

Separate reusable material from conditions needing a recheck

The same principle applies to a business screen's summary and actual save target. A summary can come from a cache while saving rechecks the current record, revision and permission. Fast display must not become unconditional execution of old state.

Northstar expresses that principle by separating descriptions from action references. This article explains code and existing unit-test scope, not fresh verification of every live site's state changes. A maker should explain which checks convenience reuse deliberately leaves intact.