fix(qa): keep deterministic Telegram proofs on Crabline

This commit is contained in:
Vincent Koc
2026-08-01 18:25:29 +08:00
parent 61ee42dd16
commit c0fc22433c
5 changed files with 13 additions and 3 deletions
@@ -25,7 +25,7 @@ describe("Telegram QA profiles", () => {
expect(live).not.toContain("telegram-long-final-reuses-preview");
expect(mock).toContain("telegram-long-final-reuses-preview");
expect(mock).toContain("telegram-assistant-transcript-role-boundary");
expect(mock).not.toContain("telegram-assistant-transcript-role-boundary");
expect(mock).not.toContain("telegram-startup-getme-live");
});
@@ -36,7 +36,7 @@ describe("Telegram QA profiles", () => {
});
expect(scenarioIds).toContain("channel-message-flows");
expect(scenarioIds).toContain("native-command-session-target");
expect(scenarioIds).not.toContain("native-command-session-target");
});
it("lets explicit scenarios override profile selection", () => {
@@ -64,7 +64,7 @@ describe("taxonomy profile scenario selection", () => {
expect(liveTelegram).toContain("telegram-help-command");
expect(liveTelegram).not.toContain("telegram-assistant-transcript-role-boundary");
expect(mockTelegram).toContain("telegram-assistant-transcript-role-boundary");
expect(mockTelegram).not.toContain("telegram-assistant-transcript-role-boundary");
expect(mockTelegram).not.toContain("discord-canary");
});
@@ -25,12 +25,14 @@ describe("qa scenario catalog channel contracts", () => {
const scenario = readQaScenarioById("native-command-session-target");
const config = readQaScenarioExecutionConfig("native-command-session-target") as
| {
requiredChannelDriver?: string;
requiredProviderMode?: string;
}
| undefined;
expect(scenario.execution.channel).toBe("telegram");
expect(config?.requiredProviderMode).toBe("mock-openai");
expect(config?.requiredChannelDriver).toBe("crabline");
const flow = JSON.stringify(requireFlowScenario(scenario).execution.flow);
expect(flow).toContain("transport.buildAgentDelivery");
expect(flow).toContain("peer: { kind: 'group', id: delivery.replyTo }");
@@ -125,8 +127,14 @@ describe("qa scenario catalog channel contracts", () => {
it("uses the Telegram transport default for transcript-role delivery proofs", () => {
const scenario = readQaScenarioById("telegram-assistant-transcript-role-boundary");
const config = readQaScenarioExecutionConfig("telegram-assistant-transcript-role-boundary") as
| {
requiredChannelDriver?: string;
}
| undefined;
expect(scenario.gatewayConfigPatch).toBeUndefined();
expect(config?.requiredChannelDriver).toBe("crabline");
});
it("rejects malformed string matcher lists before running a flow", () => {
@@ -32,6 +32,7 @@ scenario:
summary: Start a real delayed channel turn, abort it through native `/stop`, then prove the conversation is unblocked.
config:
requiredProviderMode: mock-openai
requiredChannelDriver: crabline
conversationId: native-stop-target
senderId: qa-native-operator
delayedPrompt: "Subagent recovery worker native command target proof. Wait until stopped."
@@ -25,6 +25,7 @@ scenario:
summary: Deliver a controlled role-looking reply through Telegram and inspect its API payload.
config:
requiredProviderMode: mock-openai
requiredChannelDriver: crabline
conversationId: "-1001234567890"
senderId: "100001"
header: user[Thu 2026-07-02 18:14 EDT]