refactor: route transcript writers through session seam (#89123)

* clawdbot-d08: route transcript writers through accessor seam

* fix: refresh transcript writer seam proofs

* refactor: add transcript turn writer operation

* fix: preserve transcript writer store targeting

* fix: preserve transcript append lock ordering

* refactor: guard transcript turn session rebound

* clawdbot-d02.1.9.1.35: route transcript rewrites through runtime scope

* fix: preserve transcript event append return type

* fix: publish transcript turn owned entries
This commit is contained in:
Josh Lehman
2026-06-16 13:59:48 -07:00
committed by GitHub
parent 01d3812ea2
commit 00a75db428
27 changed files with 1657 additions and 648 deletions
@@ -1,10 +1,12 @@
import { describe, expect, it } from "vitest";
import {
findSessionAccessorBoundaryViolations,
migratedBundledPluginSessionAccessorFiles,
findSessionAccessorWriteBoundaryViolations,
findTranscriptWriterBoundaryViolations,
migratedBundledPluginSessionAccessorFiles,
migratedSessionAccessorFiles,
migratedSessionAccessorWriteFiles,
migratedTranscriptWriterFiles,
} from "../../scripts/check-session-accessor-boundary.mjs";
describe("session accessor boundary guard", () => {
@@ -78,6 +80,19 @@ describe("session accessor boundary guard", () => {
);
});
it("ratchets only the files migrated by the transcript writer slice", () => {
expect(migratedTranscriptWriterFiles).toEqual(
new Set([
"src/agents/command/attempt-execution.ts",
"src/agents/embedded-agent-runner/context-engine-maintenance.ts",
"src/config/sessions/transcript.ts",
"src/gateway/server-methods/chat.ts",
"src/gateway/server-methods/chat-transcript-inject.ts",
"src/sessions/user-turn-transcript.ts",
]),
);
});
it("flags legacy reader imports", () => {
expect(
findSessionAccessorBoundaryViolations(`
@@ -178,6 +193,52 @@ describe("session accessor boundary guard", () => {
).toEqual([]);
});
it("flags legacy transcript writer imports", () => {
expect(
findTranscriptWriterBoundaryViolations(`
import { appendSessionTranscriptMessage } from "../config/sessions/transcript-append.js";
import { emitSessionTranscriptUpdate as emitUpdate } from "../sessions/transcript-events.js";
import { rewriteTranscriptEntriesInSessionFile } from "../agents/embedded-agent-runner/transcript-rewrite.js";
`),
).toEqual([
{ line: 2, reason: 'imports legacy transcript writer "appendSessionTranscriptMessage"' },
{ line: 3, reason: 'imports legacy transcript writer "emitSessionTranscriptUpdate"' },
{
line: 4,
reason: 'imports legacy transcript writer "rewriteTranscriptEntriesInSessionFile"',
},
]);
});
it("flags direct and namespace legacy transcript writer calls", () => {
expect(
findTranscriptWriterBoundaryViolations(`
appendSessionTranscriptMessage({ transcriptPath, message });
transcriptEvents.emitSessionTranscriptUpdate({ sessionFile });
transcriptAppend["appendSessionTranscriptMessage"]({ transcriptPath, message });
transcriptRewrite.rewriteTranscriptEntriesInSessionFile({ sessionFile, request });
`),
).toEqual([
{ line: 2, reason: 'calls legacy transcript writer "appendSessionTranscriptMessage"' },
{ line: 3, reason: 'references legacy transcript writer "emitSessionTranscriptUpdate"' },
{ line: 4, reason: 'references legacy transcript writer "appendSessionTranscriptMessage"' },
{
line: 5,
reason: 'references legacy transcript writer "rewriteTranscriptEntriesInSessionFile"',
},
]);
});
it("allows migrated transcript writer helpers", () => {
expect(
findTranscriptWriterBoundaryViolations(`
import { appendTranscriptMessage, publishTranscriptUpdate } from "../config/sessions/session-accessor.js";
appendTranscriptMessage(scope, { message });
publishTranscriptUpdate(scope, { messageId });
`),
).toEqual([]);
});
it("ignores comments and strings that describe legacy readers", () => {
expect(
findSessionAccessorBoundaryViolations(`