Skip to content

History imaging drops enumerated requirement lists that the exact-identifier factsheet doesn't preserve #233

Description

@future3OOO

Setup: pxpipe-proxy 0.13.1, text→image request compression, Claude Code (claude-fable-5), WSL2. Observed in an A/B benchmark: identical task prompt and model, one arm direct, one through pxpipe.

Symptom: The 2,609-byte opening prompt contained an enumerated API contract (4 distinct required function names by exact literal match, plus semantics clauses such as boolean SELECT/expression invariant behavior). The direct arm retained the enumeration end-to-end and implemented it. In the proxied arm, once the opening turn crossed the history-imaging threshold (~20 min in), every artifact the agent authored afterwards restated the task theme accurately but dropped most of the enumerated surface — a breadth-shaped dropout (several co-listed requirements vanish together), characteristic of recall-from-image rather than incremental drift. Final score on the enumerated surface: 0/60 vs a substantially complete direct-arm implementation.

Loss is in-history, not at ingestion: minutes before the freeze, the proxied agent transcribed the full enumeration verbatim into a scratch file (timestamped); planning artifacts authored ~9 minutes after the freeze already show the narrowed surface. So the prompt arrived intact and fidelity was lost when the turn was imaged.

What already works: the exact-value factsheet appended alongside imaged turns preserved identifiers (paths, hashes, names) reliably — those survived in the proxied arm. The gap is that normative enumerations (MUST-lists, API signatures with error-class mappings, numbered requirement lists) are not in the preserved class, and they are exactly the content whose loss silently changes what an agent builds.

Suggestions, in increasing order of effort:

  1. Never image the task-defining/opening turn(s) — pin them as text permanently. Cheapest, closes the worst case.
  2. Extend factsheet extraction to normative enumerations: bullet/numbered lists containing function-call syntax, MUST/SHALL clauses, and error-class names, carried verbatim like identifiers are today.
  3. Mark imaged turns explicitly as lossy in the rendered context so downstream agents know to re-fetch authoritative text from disk instead of trusting recall.

Happy to provide the paired transcripts/timestamps privately if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions