Repository navigation
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
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.
d3d52dc to
f58fd02
Compare
|
debt-src at f9ada9a, every finding: |
ad0610c to
68838ad
Compare
b60e7da to
ad6a752
Compare
|
Closed: 17 of its 19 commits landed patch-equivalent through #3581 (799855d; git cherry origin/main shows them as '-'). The one live change left is ad6a752 (thinking text goes out as AssistantTranscript and finishes the record once per block, claude_protocol.py:480-485 on main). slot-activity is told to carry it alone as a fresh 3-file PR off main. The native pin commit e924f2c is stale. |
Status — source checkpoint, NOT accepted
19 commits on current main; 36 files, +1,075/-288 at
ad6a75278efa444d08a6e96a1a96d39711415d95. Rebased onto208275fba57c7b38be566546eb9347aa21759db2; exact remote head verified. No behavioral, installed, or twelve-directive acceptance is claimed.Still open: Claude promptId reuse requires occurrence identity and a one-shot retained-row carry/rekey. The crash-asserting reused-prompt control is still wrong and must be replaced with the real retirement/wake case. B's twelve-directive result remains unproved.
Claude answers-linking: open dependency on the tools/call _meta capture at connector.py:802 (claude-code). The free model-supplied source_turn was deleted. Explicit received-original answers remain available; no newest-turn inference substitutes for missing provenance.
P958's urgent installed-worker repair now takes priority under codex-greentext. Slot-activity retains this unfinished source and its clean checkout; this is not a delivery or abandonment of the remaining A2 repair.
What changed
Delivery and answer ownership
Before: process-local reply sender sets, newest-row inference, cursor reconstruction, a TurnDelivery forwarding wrapper, and model-supplied external turn identity.
After: existing ExternalTurn/ExternalTurnInput retain exact opening references; DeliveredInput carries its source directly; Messaging remains the ordinary Message.answers writer. Destination types exclude automatic channel sends. All active reply windows retire through their declared family and index rather than limit=1 or full-history decoding.
Deleted: Bus.delivered_unanswered, ReadCursor.read_sql, TurnDelivery, RuntimeUpdate.in_turn, newest-row answering, newest-only retirement, and every branch-added TYPE_CHECKING import.
Reader and dependency repairs
BusReader.answering owns its observing connection; Messaging no longer passes a BusSnapshot to a sqlite3.Connection API. Capture/read ownership is outside the source-turn loop.
HistoricalNativeAnswers joins retained coordination proof to bounded NativeTranscript reading, above both low-level readers. It no longer inherits the whole TranscriptSource traversal family; that family's dead answered_inputs default is gone. InputAnswerRead owns the one empty-request guard. The native join rejects a mismatched source message ID.
NoNativeInput represents a parent chain with no input. The complete-entry requirement remains on NativeRecord; tracked-user behavior moved to the existing RecordedEntry ancestor. Native projection asks the record whether an input identity was reported instead of asking a generic RecordedEntry for a nonexistent message attribute.
ExternalTurn.store avoids an UPDATE when reply-window state is unchanged.
External wire boundaries
PromptRecord unifies supported Claude prompt shapes, but promptId-only identity is still incomplete on legal reuse after turn_duration. This is explicitly not marked fixed.
Codex ClientId has missing, foreign and bus members decoded at ingress. Bus prefix formatting and completion behavior belong to BusClientId, not consumer string surgery. Historical PublishedPage remains non-confirming.
Narration and one-record publication
NarrationTranscript is visible assistant progress, but inherits non-answering and non-DM-final behavior. ModelOutput still closes admission. AgentTextTranscript owns shared category/import behavior; NoticeTranscript retains its non-conversation import behavior and own category declaration.
AssistantBlock contributes typed events separately from activity/tool updates. AssistantRecord finishes their tuple once: narration plus a real answer no longer compete for the same record UUID. Redacted thinking contributes an empty existing ThinkingTranscript marker so it closes opening admission without exposing hidden content.
The existing twelve-directive thinking case already uses the real Claude decoder. Added unrun variants cover narration+final in one record and hidden thinking before incoming directives. No duplicate direct-ThinkingTranscript control was added.
Review findings at the current checkpoint
Earlier A/B review artifacts remain under
/home/ts/.cache/agent-scratch/claude-code/reviews/3594-{8fe4807a0,897f0efcd,b42c8ab30}.md. Older source acceptances do not approve this head.Actual evidence and limits
ok, including after rebase.dm-review-narration-rebase-push.logcontains the verified push and full diff stat../stack/native/prepare-pi-native --update-pins --python <existing runtime python>exited 0; Node syntax and generated package checks ran.NativeBuildInputs.require_pinnedprintedpin okbefore the rebase. Final-head archive pin acceptance remains the merger's obligation.dm-review-native-proof-carry.loganddm-review-native-proof-held-carry.log; unchanged-row digestf5ced3a534d8b32b4d52f609ce14132196dba5d085e900e2e3cdb811e2843ae0./home/ts/.cache/agent-scratch/slot-activity/native-prep-39470; the preparation cleaned its intermediate packages. The 40 KiB journal-copy evidence remains atnative-proof-carry-39470pending acceptance. The prepared native artifact is linked only from this development checkout, not installed as the live runtime.Assumed
_meta; the raw integration-owned capture decides that.