From 1c04f17c8c95db5c65e74ea49ac81be044854915 Mon Sep 17 00:00:00 2001 From: weichen Date: Tue, 15 Sep 2026 13:26:20 +0000 Subject: [PATCH] test(events): reject replay apply without approval ref ReplayPlan two-person apply already required digest match; this pins the missing ApprovalRef negative so dry-run tickets cannot skip the ticket field. Co-authored-by: Cursor --- .../ops}/2026-09-15-doccontent-canonical-boundary.md | 0 .../ops}/2026-09-15-durable-event-track-e.md | 0 .../ops}/2026-09-15-event-e0a-production-scope-contract.md | 0 .../ops}/2026-09-15-event-e0b-dispatcher-pg.md | 0 .../ops}/2026-09-15-event-e1a-notify-cutover.md | 0 .../ops}/2026-09-15-event-e1b-workflow-advance.md | 0 .../ops}/2026-09-15-event-e2-hook-guard.md | 0 .../ops}/2026-09-15-intent-bizdev-boundary.md | 0 .../ops}/2026-09-15-stageflow-type-ownership.md | 0 internal/events/replay_test.go | 4 ++++ 10 files changed, 4 insertions(+) rename .doc/{ops/short-term => archive/ops}/2026-09-15-doccontent-canonical-boundary.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-durable-event-track-e.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-event-e0a-production-scope-contract.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-event-e0b-dispatcher-pg.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-event-e1a-notify-cutover.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-event-e1b-workflow-advance.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-event-e2-hook-guard.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-intent-bizdev-boundary.md (100%) rename .doc/{ops/short-term => archive/ops}/2026-09-15-stageflow-type-ownership.md (100%) diff --git a/.doc/ops/short-term/2026-09-15-doccontent-canonical-boundary.md b/.doc/archive/ops/2026-09-15-doccontent-canonical-boundary.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-doccontent-canonical-boundary.md rename to .doc/archive/ops/2026-09-15-doccontent-canonical-boundary.md diff --git a/.doc/ops/short-term/2026-09-15-durable-event-track-e.md b/.doc/archive/ops/2026-09-15-durable-event-track-e.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-durable-event-track-e.md rename to .doc/archive/ops/2026-09-15-durable-event-track-e.md diff --git a/.doc/ops/short-term/2026-09-15-event-e0a-production-scope-contract.md b/.doc/archive/ops/2026-09-15-event-e0a-production-scope-contract.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-event-e0a-production-scope-contract.md rename to .doc/archive/ops/2026-09-15-event-e0a-production-scope-contract.md diff --git a/.doc/ops/short-term/2026-09-15-event-e0b-dispatcher-pg.md b/.doc/archive/ops/2026-09-15-event-e0b-dispatcher-pg.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-event-e0b-dispatcher-pg.md rename to .doc/archive/ops/2026-09-15-event-e0b-dispatcher-pg.md diff --git a/.doc/ops/short-term/2026-09-15-event-e1a-notify-cutover.md b/.doc/archive/ops/2026-09-15-event-e1a-notify-cutover.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-event-e1a-notify-cutover.md rename to .doc/archive/ops/2026-09-15-event-e1a-notify-cutover.md diff --git a/.doc/ops/short-term/2026-09-15-event-e1b-workflow-advance.md b/.doc/archive/ops/2026-09-15-event-e1b-workflow-advance.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-event-e1b-workflow-advance.md rename to .doc/archive/ops/2026-09-15-event-e1b-workflow-advance.md diff --git a/.doc/ops/short-term/2026-09-15-event-e2-hook-guard.md b/.doc/archive/ops/2026-09-15-event-e2-hook-guard.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-event-e2-hook-guard.md rename to .doc/archive/ops/2026-09-15-event-e2-hook-guard.md diff --git a/.doc/ops/short-term/2026-09-15-intent-bizdev-boundary.md b/.doc/archive/ops/2026-09-15-intent-bizdev-boundary.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-intent-bizdev-boundary.md rename to .doc/archive/ops/2026-09-15-intent-bizdev-boundary.md diff --git a/.doc/ops/short-term/2026-09-15-stageflow-type-ownership.md b/.doc/archive/ops/2026-09-15-stageflow-type-ownership.md similarity index 100% rename from .doc/ops/short-term/2026-09-15-stageflow-type-ownership.md rename to .doc/archive/ops/2026-09-15-stageflow-type-ownership.md diff --git a/internal/events/replay_test.go b/internal/events/replay_test.go index 9b671927..ba126432 100644 --- a/internal/events/replay_test.go +++ b/internal/events/replay_test.go @@ -27,6 +27,10 @@ func TestApplyReplayRequiresMatchingDigestAndTwoPerson(t *testing.T) { if err := ApplyReplay(p, "deadbeef"); err == nil { t.Fatal("digest mismatch must fail") } + p.ApprovalRef = "" + if err := ApplyReplay(p, digest); err == nil { + t.Fatal("apply without approval ref must fail") + } } func TestLegacyAuthorizeReplayStillDryRunOnly(t *testing.T) {