hacifootprint
hcifootprintInterfaces

FreshnessPolicy

Interface: FreshnessPolicy

Defined in: src/atom/types.ts:410

FOUR AXES, EACH ANSWERED SEPARATELY — declare it per action (ActionDef.freshness) or once for the session (SessionOptions.freshness); the action's own answer wins, axis by axis, and an axis nobody answered is 'disclose'.

Every axis compares the OfferRecord a fire CITES against the session right now. A fire that cites no offer cannot be compared to anything, which is why an enforcing policy requires the citation (OFFER_REQUIRED) — see FireOptions.offerId.

'settle-claim': {
  does: 'Settle the claim',
  reads: ['claim.total'], writes: ['purse.left'],
  freshness: { readChanges: 'require-ack', writeChanges: 'refuse' },
}

KEY NAMES AND VERSIONS ONLY. No value is compared, held or served on this path: the mechanism says a key moved, never that its value is now wrong. What the movement MEANS stays on the app's side of the seam — which is why the response is something an integrator declares rather than something the library picks.

Properties

guardChanges?

optional guardChanges?: FreshnessResponse

Defined in: src/atom/types.ts:416

A key this control's GUARD is judged on has been committed since the offer. The guard still passes — a guard that stopped passing is GUARD_FAILED, which fires first and is not this.


positionChanges?

optional positionChanges?: FreshnessResponse

Defined in: src/atom/types.ts:426

The cursor is on a different page than when the row was served, or the served structure has changed under it (structureVersion). Both halves are "the row you planned against is not the surface you are firing into".


readChanges?

optional readChanges?: FreshnessResponse

Defined in: src/atom/types.ts:418

A key the app declared this control's outcome READS has been committed since the offer.


writeChanges?

optional writeChanges?: FreshnessResponse

Defined in: src/atom/types.ts:420

A key the app declared this control WRITES has been committed since the offer.

On this page