Skip to content

Remove array-route leftovers and #854 heap harnesses after the journal-fed send route #3848

Open

Description

@acoliver

Problem

#854 made the journal-fed source route the only send route and deleted the array send route and its enforcement. Code that only served the old array route, plus measurement harnesses from the #854 investigation, is still in the tree. The removal was left out of #854 to keep that PR's diff reviewable.

Candidates

Each item needs a caller check before deletion. Anything still reachable from a product path stays.

Provider paths for calls without requestRows

  • packages/providers/src/utils/collectContents.ts and its users in loadBalancing/preparedPromptOptions.ts. LoadBalancingProvider still has a collect-and-replay branch for calls that arrive without requestRows.
  • The Responses content filler used when a call carries contents instead of rows.
  • The Anthropic and OpenAI chat projectPromptEnvelope array branches.
  • packages/agents/src/core/DirectMessageProcessor.ts seems to be the last production caller that sends a materialized contents array. Moving it onto request rows would let the branches above go.

Test oracles

  • The in-memory OneShot/MiddleOut compress() paths in packages/agents/src/compression. Product compression runs through the disk runners. The in-memory versions survive as byte-equivalence oracles for scripts/tests/oneshot-summary-body.test.ts and middleout-summary-body.test.ts. They belong in test support, not product source.

Heap and owner-count harnesses
The repeated-turn retained-heap proof packages/agents/src/core/__tests__/journal-retained-growth.test.ts (400 turns, with a trap that must fail) now covers memory retention. These older harnesses take statistical heap samples or owner counts, and should either be deleted or cut down to plain behavioural assertions:

  • packages/cli/src/services/wholepeak.test.ts, wholememory-probe.test.ts, wholememory-targets.test.ts, wholememory-media-peak.test.ts and their support modules.
  • The remaining scripts/tests/*-memory-child.ts workloads and their parent tests.
  • packages/test-utils retained-growth helpers, if nothing else uses them.
  • The streamprocessor-retained* owner census tests in packages/agents/src/core.

Related: #3298 (older dead provider legacy paths).

Acceptance

  • Each removed path has no product callers. Show the grep or structural check in the PR.
  • Request bodies are unchanged, verified by the providerBody*.p05b4 and source differential tests.
  • Lint, typecheck and the full test suite stay green, with no thresholds relaxed.

Follow-up from #854.

Activity

  1. github-actions commented on Oct 10, 2026

    @github-actions
    Contributor

    LLxprt Issue Planner — infrastructure failure

    The autonomous planner failed with exit code 1. Please inspect the workflow logs (Run planner agent section) and re-run once resolved.

  2. added theissue type on Oct 13, 2026
  3. added this to the 0.12.0 milestone on Oct 13, 2026
  4. acoliver commented on Oct 13, 2026

    @acoliver
    CollaboratorAuthor

    Scope update: #3852 now removes the whole-history collection on the send path itself (the load balancer's collect-and-replay branch and BaseProviderNormalization's collection for calls without journal rows), so that part is done there. What remains here: retire the older heap/forensic harnesses, move the in-memory OneShot/MiddleOut compress() reference out of product code, and delete unused code the #3852 review found (staticPrintLedger.tsx, materialize(), _previousHistory). Tracked under #3868.

  5. acoliver commented on Oct 14, 2026

    @acoliver
    CollaboratorAuthor

    More unused code found while finishing #3852 (no production caller; safe to delete in this cleanup): ConversationCache (packages/providers/src/openai/ConversationCache.ts) and the CLI's getConversationCache lookup that never finds one; patchMessageHistory, identifyMissingToolResponses and deepCopyMessages in openai/syntheticToolResponses.ts (the send path uses createSyntheticResponses only); buildMessagesWithReasoning in openai/OpenAIRequestBuilder.ts (chat now builds bodies with OpenAIChatBodyBuilder). The array converters convertToAnthropicMessages/prepareAnthropicRequest stay as test oracles behind anthropicArrayRouteBoundary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Code Quality / ModularizationIssues to do with the quality of llxprt code and its maintainability.

    Type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions