A content-deduplicated shared file has no visible change record. If its metadata became unavailable while the harness-home winner changed or vanished, the reconciler skipped the failed candidate and still published the winner's replacement or removal. Guidance that remained in the shared file disappeared from the model's effective instructions. Content-read failures had the same partial-group behavior even when metadata probing succeeded. Rollback the probed candidate group whenever any metadata probe is unavailable or its bounded content read cannot complete. Include candidates without a visible predecessor and candidates previously removed as duplicates. Reuse one rollback operation for proposed messages, deferred version updates, metadata mutations, and retained digest bookkeeping, so a later successful pass can reconstruct the complete group independent of cache warmth. A filesystem path can also appear as a project instruction when the Harness home is the project root. Releasing observed paths on rollback let that later alias publish the very content withheld by the failed global group. A transient failure of the first member also left failed and unvisited paths unreserved. Factor the existing scope-to-file path calculation and reserve every eligible member's absolute path for the rest of that pass when its group rolls back. Project aliases therefore cannot bypass group preservation, without additional filesystem operations. The shared resolver keeps probing and rollback path calculations identical. Add metadata, content-read, and one-shot first-member failure regressions for this supported same-file layout and its recovery. Keep cancellation propagating to the caller. Keep explicit baseline-budget exclusions outside observation rollback, because their removals are deliberate policy decisions. No new session fields, baseline identities, polling, retries, or process-global state are needed. Clarify the metadata/content and hidden candidate guarantee in the bilingual README. Add four real-plugin outage/recovery tests for metadata or content failure while the retained home file is edited or deleted, plus a cold-cache reconciliation regression. Add an authored headless session scenario with instance-local provider failure injection: request two keeps baseline A while shared metadata is unavailable; request three receives the home B replacement and shared A addition together after recovery. The fixture restores the provider method on disposal and asserts the real home/shared files before restoring observation. Declare its test-only filesystem dependency without changing runtime packages. Regenerate the persistence catalog's source anchors after the shared path helper import shifts AgentInstructionSource by one line. Its persisted fields and SHA-256 type fingerprint remain unchanged; no type acknowledgement or Session migration is required for a source-location-only update. Validation: - All five new regressions failed with the intended partial-group emissions before the source fix. - pnpm exec vitest run packages/context/agent-instructions/tests/agent-instructions.spec.ts -t 'hidden duplicate has|cold global group|unavailable active candidate|unavailable scope': 8 passed. - pnpm exec vitest run packages/context/agent-instructions: 174 passed. - The focused authored headless snapshot refresh and replay passed. - Restoring the early skip for an unavailable hidden candidate makes the headless snapshot fail with the premature harness-home replacement. - README translations were updated together and their pairing rerecorded. - Three project-alias regressions failed on the initial group rollback fix, then passed after reserving failed and unvisited candidate paths. - pnpm exec vitest run packages/context/agent-instructions/tests/agent-instructions.spec.ts -t 'frozen across a project alias|hidden duplicate has|cold global group|caches a removed duplicate': 12 passed.
description, kind
| description | kind |
|---|---|
| The test-support group map: keyless test harnesses, LLM mock and replay servers, and Loader smoke helpers for developers writing and running repository tests. | package-group |
packages/test-support
English | 中文
Summary
The test-support group gives repository tests deterministic, keyless ways to exercise the real product. It includes Loader application harnesses, session-log snapshot adapters, a replay LLM plugin, and a scriptable OpenAI-compatible fault server. Each package is support-tier infrastructure; a package moves out of this group when it gains a product contract and product consumers.
Table of Contents
Packages
| Package | Role |
|---|---|
session-snapshot |
Provides session-log snapshot support and protocol adapters for profile-driven tests |
agent-loop-testkit |
Provides the shared prerequisite services for tests that exercise the concrete AgentLoop |
client-runtime |
Provides the jsdom slot test bench for browser feature specs |
remote-mock |
Provides the endpoint-named Typert Remote mock and the Connection carrier face whole-client specs install |
loader-smoke |
Boots Loader-composed applications and drives fixture turns for smoke tests |
llm-mock-server |
Provides a scriptable OpenAI-compatible fault server for recovery tests |
llm-replay |
Replays recorded model streams for keyless tests and demos |
Related documentation
- Testing policy — the keyless snapshot tier these harnesses serve and when it is required.
- Package groups — how support groups relate to the product groups.
Dev Note
Working context for maintainers — click to expand
None.