Skip to content

Freshness

Closed enumeration of how current a content item is. State machine progresses freshagingstaleexpired driven by lifecycle_type and per-domain freshness decay configuration. Per WP-ONTO-R1 §6.2, the vocabulary itself is CORE/closed, but the THRESHOLDS that move an item between states are client-configurable per domain via governance_config.freshness_decay_*.

None.

keylabelprovenance
freshFreshcore
agingAgingcore
staleStalecore
expiredExpiredcore
  • record_lifecycle.freshnesstext DEFAULT 'fresh'. Re-homed off content_items.freshness at ID-131 M1a (20260628190000_id131_record_lifecycle_facet); content_items itself was DROPPED at ID-131 M6.
  • record_lifecycle.previous_freshness — historical freshness column, same facet table. The pre-M1a content_items_previous_freshness_check value-set CHECK did not carry over — record_lifecycle has no equivalent CHECK on either freshness or previous_freshness (only the axis-nullability CHECK below); both columns are soft/unconstrained in the new home.
  • record_lifecycle.expiry_date — used by date_bound lifecycle_type (CV 06); same facet table.
  • Source-document-only axis (D7). freshness/freshness_checked_at/previous_freshness/expiry_date all belong to record_lifecycle’s freshness/expiry/review-cadence axis, which is owner_kind='source_document'-ONLY (record_lifecycle_freshness_axis_chk forces all four NULL on owner_kind='q_a_pair' rows) — Q&A pairs carry no freshness clock at all (D7).
  • Bound to lifecycle_type (CV 06): different lifecycle types decay at different rates.
  • governance_config.freshness_decay_* — per-domain client-tunable thresholds.
  • Adjacent to recalculate_all_freshness RPC — pre-dates the record_lifecycle facet; its post-M1a target table is not re-verified by this subtask.
  • Layer 2 (administrative metadata): freshness is a derived governance signal.
  • lib/freshness.tscalculateFreshness() and batchCalculateFreshness() (the canonical freshness compute path).
  • lib/quality/quality-score.ts, lib/quality/quality-actions.ts — freshness scoring.
  • lib/dashboard.ts, lib/dashboard-signals.ts, lib/notifications.ts, lib/attention.ts — surfaces freshness signals for governance.
  • lib/mcp/tools/quality.ts, lib/mcp/tools/governance.ts — MCP filter and scoring inputs.
  • Governance review schedulers and “review overdue” UI surfaces.
  • Filter UI (e.g. “show only fresh content”) via components/browse/filter-panel.tsx.
  • Change Reports surface (per CLAUDE.md: user-facing label is “Change Reports”; internal code still uses “digest”).
  • Vocabulary CORE; thresholds HYBRID per source §6.2 row.
  • Closed CHECK enum.
  • Freshness decay is not the same as extraction_method “freshness” used in cocoindex contexts (per source §3.7) — orthogonal concept.