Skip to content

FP-3 public preservation journeys

This evidence applies to 7fc398422a7e3966f0cf739c659e69e3902a96c6 plus this branch. It uses offline deterministic models; persistence and lifecycle claims use the actual stores and coordinators named below. No cache marker is reported as a billing or latency measurement.

Scenario inventory

Track High-risk controls / rows Public door and exact test Expected observable Result / owner
Memory lifecycle quick_nap_interval; post-turn write; QUICK cadence AgentHost โ†’ Agent.run; test_the_nap_reads_a_store_the_turn_already_published_to, test_a_phase_that_explodes_does_not_cost_the_user_their_answer Second scoped turn starts QUICK only after the real lifecycle flush; phase reads non-empty store Pass; native cadence, ordering, scope isolation, background behavior, charged run identity, and failure containment are covered by the eight nodes in that module.
Memory recall scope and cross-turn recall AgentHost โ†’ Agent.run; test_vertical_slice.py::test_a_later_session_recalls_what_an_earlier_one_was_told The second provider prompt contains the first turn's persisted memory Pass; this is a provider-input assertion, not a fluent-answer assertion.
Memory scope / speaker boundary working_layer_exclude_speakers; session scope test_conversation_memory_does_not_bleed_into_another_chat, test_identity_and_speaker_come_from_reserved_metadata Another chat cannot see a session-local fact; producer speaker metadata is read rather than invented Pass for the tested working-window path. Episodic quote behavior remains a separate FP-4 migration decision.
Consolidation composition phase1_spreading_weight, episodic summary caps, enable_semantic_merge, model/candidate/draft limits test_the_factory_returns_the_whole_cadence_in_roster_order, test_a_memory_two_phases_read_is_one_candidate, test_every_field_is_one_the_consolidator_actually_accepts Factory has a complete QUICK roster and direct collaborators choose applied/declined phase behavior The executable supported recipe is documented in the FP-4 transition guide. LearningPolicy.phase_12_llm_model maps to procedural_model_name; phase_12_llm_max_episodes_per_run is a real policy field. enable_semantic_merge is intentionally collaborator composition in quick_phases, not a policy field. Per-setting legacy-outcome parity remains unverified.
Governance outcome metacognition revise/refuse outcome Agent.run and drained Agent.stream; test_public_egress_steer_does_not_return_the_unamended_draft, test_egress_refusal_withholds_blocking_run_text_from_event_sinks, test_a_refusal_is_recorded_as_refused_with_its_rule An egress STEER without amendment content raises GovernanceRefused before run, a stream, or an event sink receives the draft Pass. Model deltas are buffered while egress governance is present, and released only after the verdict. A reflector outage retains its existing fail-open policy; this refusal is the explicit non-amendable verdict outcome.
Durable continuation pause TTL, tenant scope, payload and turn-state recovery test_fp3_public_preservation_journeys.py::test_durable_human_pause_and_resume_cross_two_fresh_processes Process 1 uses HumanInteractionCapability.pause to persist a signed token, payload, and turn state through one SQLite adopter port; fresh process 2 rebuilds the capability and calls its public resume Pass. The parameterized journey asserts successful payload and history recovery plus ScopeBindingError, PauseCheckpointNotFoundError, PayloadBindingError, and PauseTokenExpiredError from separate fresh-process attempts.
Kernel continuation composition kernel Agent / AgentHost public continuation door test_fp3_public_preservation_journeys.py::test_public_host_continues_a_durable_pause_in_a_fresh_process Process 1 pauses with a public Agent; process 2 creates a new AgentHost and resumes through human_continuation(...) Pass. The resolver receives authenticated claims and resolves the signed scope hash, rather than accepting a scope from an untrusted token. The journey covers success, preparation retry without consuming a token, single-use rejection, scope mismatch, missing/corrupt payload, and expiry. Resumption is at-most-once after token consumption.
Cache/history messages_cache_policy, system_prefix_cache_ttl, manifest_cache_position test_fp3_public_preservation_journeys.py::test_public_two_turn_cache_reaches_anthropic_wire_with_ttl_marker Real LangChain Anthropic serialization has second-turn user/assistant history and an L1 1h marker Pass for the public provider-system cache region and TTL. Earlier structured contributions keep their annotations. History is passed independently and is not claimed to share or replace the legacy rolling-history cache policy. No billing or latency conclusion follows from the marker.
Cache safety regressions image/history integrity, provider cache serialization test_structured_system_list_1h_tier_propagates_to_L0, test_anthropic_text_and_image_blocks, test_public_two_turn_cache_reaches_anthropic_wire_with_ttl_marker Structured cached blocks and valid image blocks retain their provider wire shapes Pass for direct serializer/knowledge paths and public Agent composition; no XFAIL remains.
Budget hms_budget_mode, hms_system_prompt_token_budget, optional/pinned behavior test_a_pinned_contribution_is_never_dropped, test_pinned_content_over_budget_fails_closed, test_a_budget_drops_the_volatile_layer_first Volatile optional rows drop first; pinned-only overflow raises; admission report records both Pass for the offline compiler contract. Region-specific legacy HMS allocation and callback behavior remain FP-4 decisions.

Commands

Run the focused evidence gate from this worktree with its source tree first:

PYTHONPATH=src python -m pytest -q \
  tests/platform/test_fp3_public_preservation_journeys.py \
  tests/platform/test_nap_after_the_turn.py \
  tests/platform/test_vertical_slice.py \
  tests/platform/test_governance_decisions.py \
  tests/capabilities/memory/test_quick_roster.py \
  tests/core/learning/test_learning_policy.py \
  tests/capabilities/memory/test_legacy_conversation_source.py \
  tests/capabilities/prompting/test_budget_and_strategies.py \
  tests/capabilities/prompting/test_prompt_compiler.py \
  tests/unit/prompt/test_langchain_anthropic_passthrough.py \
  tests/capabilities/knowledge/test_multimodal_wire.py

Expected result on this revision: the focused journeys pass. The cache, egress-governance, and host-continuation probes are ordinary behavioral checks, not XFAILs. Their assertions cover the actual public outcome rather than a surface method name.

FP-4 handoff

FP-4 supplied the documented AgentHost.resume composition, provider-system cache annotation forwarding, and explicit egress refusal. The remaining matrix rows stay classified individually: these successes do not establish blanket legacy feature preservation, rolling-history cache equivalence, or per-setting learning-policy parity.