Skip to content

P265: preserve source-prefix clocks with required event times - #2025

Merged
trissim merged 8 commits into
mainfrom
fix/p265-recorded-event-time
Oct 20, 2026
Merged

trissim merged 8 commits into
mainfrom
fix/p265-recorded-event-time

Conversation

@trissim

@trissim trissim commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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

  • Fresh authorized background run, timeout 300 / -X faulthandler: 48 passed, 1 deselected, exit 0. The first fresh run found the malformed-shell integration regression (47 passed / 1 failed); the final run confirms its repair. The original UNKNOWN attempt was not replayed or counted as passing.
  • Actual-event snapshot driver tests/verify_external_event_times.py: exit 0, no provider input or live-store writes.
  • Earlier saved native read: 17 dated events. Earlier actual Claude-source read: 50 items / 89 dated events.
  • Source/consumer census used the shared audit tooling across Core and paired Toad, with no parse omissions; dynamic family resolution is not behavioral proof.

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.

Copilot AI balanced review requested due to automatic review settings October 19, 2026 22:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
trissim marked this pull request as draft October 19, 2026 22:56
@trissim trissim changed the title P265: source-recorded transcript clocks and resilient shell lexing P265: preserve source-prefix clocks with required event times Oct 19, 2026
@trissim
trissim marked this pull request as ready for review October 19, 2026 23:53
trissim and others added 6 commits October 19, 2026 20:16
#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>
@trissim

trissim commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Not merged: conflicts with main in external_transcript.py and recorded_time.py. Rebase.

@trissim
trissim merged commit 435fbd7 into main Oct 20, 2026
0 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants