Repository navigation
P265: preserve source-prefix clocks with required event times - #2025
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
trissim
marked this pull request as draft
October 19, 2026 22:56
trissim
marked this pull request as ready for review
October 19, 2026 23:53
#2011 made every transcript event carry its time but left 45,458 saved Claude tool events undated, so every rotate crashed decoding them. The carry takes each event's time from its Claude Code transcript (all 45,458 found, 6 s) and refuses if any stays undated; the unjudged query loses its undated branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in one update Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Not merged: conflicts with main in external_transcript.py and recorded_time.py. Rebase. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
P265 — source-recorded transcript event clocks
Head:
47a5a1e3f.TranscriptEvent requires a float clock. Native entries pass their recorded clock before event construction; Claude/Codex share TimestampedWire validation. Claude tools retain their source records, Codex/OpenCode factories require time, and observed draft prefixes retain their source clock through EventTime.stamp. IncomingTranscript derives its clock from the Message. No clock defaults or undated-event dropping.
Restored the narrow malformed-shell ValueError handling after integration had removed it: simple_commands still returns tuples of words, including malformed input for the install rule to inspect. No command wrappers or caller catch.
Retained data
Reused the already-reviewed, source-backed ExternalEventTimes StoreCarry from main, preserving the original four commits' implementation rather than inventing another migration. It dates retained rows from original Claude records and refuses unmatched source clocks. It is included in this branch/PR; no runtime old reader was added.
A fresh snapshot of the configured commander's actual external-event store contained 0 undated rows. The carry was idempotent, and all 62,316 copied events decoded with float timestamps. This is newer evidence than the earlier 45,644-NULL audit; the earlier failure is not claimed to remain current. The live store and original Claude records were opened read-only.
P270 #2036 changes merged-order inheritance and its carry, not event clocks; it is not the owner of this migration.
Verification
tests/verify_external_event_times.py: exit 0, no provider input or live-store writes.Remaining / Assumed
Earlier rotate died on NULL decoding, and an earlier tool-watch survived 120 seconds but caused duplicate enforcement while another watcher was live. Do not repeat that live watcher as harmless verification. This PR does not claim a fresh uninterrupted 30-minute rotate/tool-watch run or installation. Batch integration/install acceptance remains necessary. No merge-main or unauthorized rebase was performed for these updates.