docs: record history pagination diagnosis
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
# Task: Diagnose older conversation history loading
|
||||||
|
|
||||||
|
## Identity
|
||||||
|
|
||||||
|
- Task ID: 20260831-diagnose-history-pagination-3eac1d7b
|
||||||
|
- Mode: Feature
|
||||||
|
- Branch: codex/20260831-diagnose-history-pagination-3eac1d7b-diagnose-history-pagination-3eac1d7b
|
||||||
|
- Worktree: /Users/inmanx/Documents/makelore-diagnose-history-pagination-3eac1d7b
|
||||||
|
- Base commit: 38f85f6b5e4dc4e2c5e5b9f8f4506554cfd578f5
|
||||||
|
- Owner: codex
|
||||||
|
- Status: Ready for Integration
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
- Diagnose why older messages stop loading while scrolling upward in the
|
||||||
|
Makelore Code conversation shown in the supplied screenshot.
|
||||||
|
- Trace Renderer scroll behavior, the public Snapshot/Host API contract,
|
||||||
|
Main-owned Pi session hydration, and the persisted session data for the
|
||||||
|
affected local conversation.
|
||||||
|
- Make no product-source, dependency, runtime, account, or external-service
|
||||||
|
changes.
|
||||||
|
|
||||||
|
## Intent And Constraints
|
||||||
|
|
||||||
|
- Preserve the Main-owned Pi `0.84.2` and product-neutral Snapshot/Patch
|
||||||
|
boundary; do not introduce or infer a Renderer-to-Pi history path.
|
||||||
|
- Treat the running development worktree, application logs, project metadata,
|
||||||
|
and Pi session files as read-only evidence.
|
||||||
|
- Distinguish persisted-data loss from a bounded projection or missing UI/API
|
||||||
|
pagination mechanism.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
- Identified a deterministic two-layer history-display boundary rather than a
|
||||||
|
transport stall or corrupt session.
|
||||||
|
- The affected Pi JSONL remains intact at 343 records / 782,976 bytes. Its
|
||||||
|
active branch contains 342 entries from 2026-08-28T08:34:53Z through
|
||||||
|
2026-08-31T11:25:59Z, with all parent links traversable to the current leaf.
|
||||||
|
- The branch contains one compaction. `projectPiSessionSnapshot()` calls
|
||||||
|
`retainedTail()`, which intentionally discards every active-path entry before
|
||||||
|
the compaction's `firstKeptEntryId`. For this session that hides 136 records,
|
||||||
|
including 128 raw messages and approximately 131 product timeline nodes.
|
||||||
|
The first retained record begins at 2026-08-29T06:11:52Z.
|
||||||
|
- The remaining tail projects to approximately 195 timeline nodes. Renderer
|
||||||
|
shows the newest 120 nodes and the `加载更早内容` button only increases that
|
||||||
|
in-memory window by 100. Its scroll handler merely tracks stick-to-bottom;
|
||||||
|
it does not request older history.
|
||||||
|
- The public Snapshot contract and `/snapshot` route expose no history-page
|
||||||
|
cursor or `before` parameter. After the one in-memory expansion reaches all
|
||||||
|
195 projected nodes, no additional Main/Pi request is possible even though
|
||||||
|
the omitted records are still on disk.
|
||||||
|
- No product source, dependencies, runtime, account, session, or external
|
||||||
|
service were changed.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- Parsed the affected `.makelore/conversations.json` binding and its exact
|
||||||
|
managed Pi JSONL without writing either file.
|
||||||
|
- Counted JSONL record types, reconstructed the current leaf-to-root active
|
||||||
|
path, checked the compaction boundary, and counted retained versus omitted
|
||||||
|
messages/product nodes.
|
||||||
|
- Inspected `CodingConversationTimeline`, the Renderer conversation Store,
|
||||||
|
shared Snapshot contract, Coding Host route, Pi runtime hydration,
|
||||||
|
`session-projector`, and Agent Server `get_entries` behavior.
|
||||||
|
- Confirmed current unit coverage explicitly expects pre-`firstKeptEntryId`
|
||||||
|
history to be absent and covers only in-memory window expansion.
|
||||||
|
- Searched the current Main log and found no `CODING_SESSION_UNREADABLE`,
|
||||||
|
missing-entry, or history-load error for this incident.
|
||||||
|
- No tests were run because this was a read-only diagnosis with no behavior
|
||||||
|
change; the isolated worktree has no installed `node_modules`.
|
||||||
|
|
||||||
|
## Follow-ups
|
||||||
|
|
||||||
|
- If a fix is requested, keep the full active-branch history available for UI
|
||||||
|
display independently of the compacted model-context tail. Add a bounded
|
||||||
|
older-history cursor/route (or, as a minimal correction, project the full
|
||||||
|
active path) and make Renderer prepend pages while preserving the scroll
|
||||||
|
anchor. Keep the compaction summary private and retain Snapshot/Patch as the
|
||||||
|
product-neutral boundary.
|
||||||
|
|
||||||
|
## Promotion Candidates
|
||||||
|
|
||||||
|
- None recorded.
|
||||||
Reference in New Issue
Block a user