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.