# Treat State as current only while its evidence remains valid

Read current State for an AgentCore task only when its declared evidence is present, applicable and within bounds. The application decides what to do with the result.

Status: Implemented in source. Prelaunch; not a live service guarantee.
Versioned Views, dependencies, current State, and bounded reconciliation are implemented in reviewed source. The exact main package is locally qualified with simulated AWS transports. That does not establish customer-production use or a publicly offered hosted service.

Reviewed: 2026-10-14.
Backend source: e16b81b4a637acec91f3aed8a71cf5b0f42f0c19.
Native toolkit: merged in PR #176, reviewed at e16b81b4a637acec91f3aed8a71cf5b0f42f0c19.
HTML: /docs/state

## In short

Let an AgentCore task ask a defined State question, such as whether the required checks are current. Kam returns current evidence only when required inputs are present, applicable and within limits; otherwise it reports blockers. Your application decides whether work may continue.

**Available today:** Views within the same scope and current-State reads are implemented in source. They do not authorize tool execution or establish live production qualification.

> Give your AgentCore application current evidence or an explicit blocker.

## Read State for the next task

- **Declare the evidence** — Name the exact required and optional inputs for the application's View.
- **Read current State** — Kam checks applicability and fixed work limits.
- **Decide in the application** — An AgentCore task proceeds only under the application's own action rules.

## The View owns requiredness

A View declares exact source identities, required and optional dependencies, priorities, freshness windows, and selection limits. Observations report lookup results; they cannot change that policy. Current invalidation counters are supplied separately.

An omitted required observation blocks selection. Foreign sources, duplicate or missing fences, future observation times, and unexpected fields are rejected. A late read from an older fence is invalidated even when it arrives last.

## Current means reusable evidence, not approval

1. **Missing or unresolved required evidence** — State is blocked with explicit issues and no usable selection identity. Missing evidence is not silently removed.

2. **Required references exceed the budget** — State blocks instead of trimming them. Optional references follow deterministic priority with explicit budget exclusions.

3. **Current evidence describes a failure** — The result may be current and still accurately report a failed security check. Admission is not a deployment decision.

## Freshness differs from retention

A freshness deadline makes evidence stale. Its availability deadline makes it expired. A newer invalidation counter can invalidate it earlier. All deadlines are exclusive; a reuse deadline is an upper bound, not permission to ignore later changes.

Exact versions across several sources do not establish one atomic cross-source snapshot. The runtime must check current permissions and source conditions at the serving or conditional-commit boundary.

## Views are connected to durable history

The server-owned trajectory-current View is connected end to end, and owner-configured Views can depend on it within the same scope. When a View's answer changes, Kam saves the new current pointer, a frozen Observation of the assessment, and a record of what changed in one conditional write. When the answer is unchanged, Kam reuses the existing pointer and avoids an unnecessary State write.

Change notifications are queued, bounded, and re-sent by a maintenance sweep if a wakeup is lost. When a source changes, Kam pages through the Views that depend on it, up to eight at a time, and saves its cursor so it can resume safely after a crash. Dependent execution supports one or more required sources in the same scope (PR #187); cross-scope joins remain staged. The private SDK reads the result with activeState() or a Component's read().

[Read the Observation boundary](/docs/observations)

## Measure the thing being limited

Internal admission accepts 1–32 dependencies, maxItems of 1–32, and maxReferenceBytes of 2–32,768. Reference bytes mean the UTF-8 JSON selected-reference array, including its metadata and punctuation.

This does not measure rendered prompts, model tokens, total response bytes, fetched payloads, or production latency. The native candidate’s Atlas displays the reference measurement without inventing a token conversion.
