feat(rectification): remove the rectification regenerate button and endpoint (BUG-1056)

T2 of TASK-rectification-grounding-20260927 (product decision P1).
The rectification 「重试(重新生成)」 was a blind agent.generate rewrite that
persisted unchecked text (invented range / fit rate reproduced). Removed:
the regenerate route, regenerate-turn.ts, the regeneration agent and its
read-only tool set, the client regenerate action/state and the
regenerating/canRegenerate props. ChatMessageActions renders the regenerate
button only when onRegenerate is passed; ordinary consultation is unchanged.
The DB function regenerate_agentic_rectification_turn is kept (AGENTS §7.6,
retire in a later round). DESIGN.md / VOICE.md updated; source-contract
tests follow with 原值/新值/原因 notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-27 03:28:27 +08:00
co-authored by Claude Opus 5.5
parent 5a8084494b
commit 84eb23152a
37 changed files with 200 additions and 961 deletions
@@ -55,7 +55,6 @@ function emptyActions(): RectificationMessageEntryProps["actionsRef"] {
submitChoice() {},
submitStop() {},
copyMessage() {},
regenerateMessage() {},
onFeedback() {},
};
return actionsRef;
@@ -63,7 +62,7 @@ function emptyActions(): RectificationMessageEntryProps["actionsRef"] {
function sharedProps(): Omit<
RectificationMessageEntryProps,
"message" | "regenerating" | "canRegenerate" | "copied" | "feedback"
"message" | "copied" | "feedback"
> {
return {
busy: true,
@@ -79,13 +78,12 @@ function sharedProps(): Omit<
function entryProps(
message: RenderMessage,
extras: Partial<Pick<RectificationMessageEntryProps, "regenerating" | "canRegenerate" | "copied" | "feedback">> = {},
extras: Partial<Pick<RectificationMessageEntryProps, "copied" | "feedback">> = {},
): RectificationMessageEntryProps {
// 原值: 另传 regenerating / canRegenerate。新值: 不再有这两项。原因: BUG-1056 删除生时校正重新生成。
return {
...sharedProps(),
message,
regenerating: extras.regenerating ?? false,
canRegenerate: extras.canRegenerate ?? false,
copied: extras.copied ?? false,
feedback: extras.feedback,
};
@@ -140,10 +138,8 @@ test("the split architecture renders settled rectification rows once while strea
renderToString(createElement(UnsplitRectificationMessageList, {
...shared,
messages: [...history, liveAssistant(streamingText)],
latestRegeneratableKey: "a2",
copiedMessageKey: null,
feedbackByKey,
regeneratingMessageKey: null,
}));
}
const unsplit = homeStreamingRenderProbeSnapshot();