修复(08-08-production-deployment-execution): 明确终止迁移回滚窗口依据
这个提交包含在:
@@ -486,12 +486,20 @@ describe("deployment safety contract", () => {
|
||||
"if [[ \"$joined\" == *'_prisma_migrations'* ]]; then",
|
||||
" case \"$mode\" in",
|
||||
" pending) printf '20260807193000_contract_registry_termination_workspace|applied\\n';;",
|
||||
" termination-pending) printf '20260807193001_followup_migration|applied\\n';;",
|
||||
" logs) printf '20260807193000_contract_registry_termination_workspace|logged_failure\\n';;",
|
||||
" *) printf '20260807193000_contract_registry_termination_workspace|applied\\n20260807193001_followup_migration|applied\\n';;",
|
||||
" esac",
|
||||
" exit 0",
|
||||
"fi",
|
||||
"if [[ \"$joined\" == *'contract_registry'* ]]; then printf '0\\n'; exit 0; fi",
|
||||
"if [[ \"$joined\" == *'contract_registry'* ]]; then",
|
||||
" case \"$mode\" in",
|
||||
" termination-pending|termination-query-failure) exit 97 ;;",
|
||||
" closed) printf '2\\n' ;;",
|
||||
" *) printf '0\\n' ;;",
|
||||
" esac",
|
||||
" exit 0",
|
||||
"fi",
|
||||
"printf 'unexpected fake docker call: %s\\n' \"$joined\" >&2",
|
||||
"exit 97",
|
||||
"",
|
||||
@@ -524,9 +532,23 @@ describe("deployment safety contract", () => {
|
||||
const result = await runRemote("happy");
|
||||
expect(result.stdout).toContain("target_identity");
|
||||
expect(result.stdout).toContain("migration_reconciliation pending=none");
|
||||
expect(result.stdout).toContain("rollbackWindow=OPEN");
|
||||
expect(result.stdout).toContain("rollbackWindow=OPEN terminatedRows=0 basis=terminated_status_count");
|
||||
const pendingResult = await runRemote("pending", "20260807193001_followup_migration");
|
||||
expect(pendingResult.stdout).toContain("migration_reconciliation pending=20260807193001_followup_migration");
|
||||
const terminationPendingResult = await runRemote(
|
||||
"termination-pending",
|
||||
"20260807193000_contract_registry_termination_workspace",
|
||||
);
|
||||
expect(terminationPendingResult.stdout).toContain(
|
||||
"rollbackWindow=OPEN terminatedRows=0 basis=migration_not_applied",
|
||||
);
|
||||
const closedResult = await runRemote("closed");
|
||||
expect(closedResult.stdout).toContain(
|
||||
"rollbackWindow=CLOSED terminatedRows=2 basis=terminated_status_count",
|
||||
);
|
||||
await expect(runRemote("termination-query-failure")).rejects.toMatchObject({
|
||||
stderr: expect.stringContaining("PROD_TERMINATED_COUNT_UNAVAILABLE"),
|
||||
});
|
||||
await expect(runRemote("unknown")).rejects.toMatchObject({
|
||||
stderr: expect.stringContaining("PROD_MIGRATION_STATUS_UNKNOWN_PENDING"),
|
||||
});
|
||||
|
||||
在新工单中引用
屏蔽一个用户