From 70bc0765f0e77af54cb78066c68bb1ebee4238a8 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 8 Aug 2026 14:11:54 +0000 Subject: [PATCH] fix(spec): stop teaching the retired ETL layer as a live retry surface in flow.zod.ts (#6630, part 2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Part 2 of 2 for #6630, closing out the three `automation/flow.zod.ts` prose sites that part 1 (PR #6701) deferred while the file was inside #5593's in-flight surface. #6414 retired the whole L2 ETL layer, so `ETLPipeline.retry` is no longer one of the surfaces that carry the converged `RetryPolicySchema` contract. Three places in this file still said it was: - the `errorHandling` TSDoc enumerated it as a live sibling of `job.retryPolicy` and a `try_catch` node's `retry`; - "a key added to the policy lands on all four surfaces at once" — three; - "the flow surface has a reading the other three do not" — the other two. Text only. No schema key, bound, default, `.describe()` or `retiredKey()` guidance string changes, so nothing regenerates: all 10 of spec's generated artifacts stay green, including `check:docs` and `check:api-surface`. Wording matches part 1's landed choices — enumerations name only surviving surfaces, the retired mention becomes explicitly historical ("did the same until #6414 retired the L2 ETL layer"), counts corrected in place. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk --- packages/spec/src/automation/flow.zod.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/spec/src/automation/flow.zod.ts b/packages/spec/src/automation/flow.zod.ts index ea87abf7a3..ba16e86ee1 100644 --- a/packages/spec/src/automation/flow.zod.ts +++ b/packages/spec/src/automation/flow.zod.ts @@ -637,13 +637,14 @@ export const FlowSchema = lazySchema(() => strictObject( * Error Handling Strategy. * * The retry knobs are the converged `RetryPolicySchema` contract, shared with - * `job.retryPolicy`, a `try_catch` node's `retry` and an ETL pipeline's - * `retry` (#4661 + #4964 — see `shared/retry-policy.zod.ts`). Until 17 this - * block spelled the base delay `retryDelayMs` while the converged policy - * spelled it `backoffMs`, so an author who read the newer file and brought - * the word here had it silently stripped (pre-批 11) or rejected (post-批 11) - * — being punished for learning the canonical spelling. `strategy` stays - * here: it selects *whether* the policy runs, it is not part of the policy. + * `job.retryPolicy` and a `try_catch` node's `retry` (#4661 + #4964 — see + * `shared/retry-policy.zod.ts`; `ETLPipeline.retry` did the same until #6414 + * retired the L2 ETL layer). Until 17 this block spelled the base delay + * `retryDelayMs` while the converged policy spelled it `backoffMs`, so an + * author who read the newer file and brought the word here had it silently + * stripped (pre-批 11) or rejected (post-批 11) — being punished for learning + * the canonical spelling. `strategy` stays here: it selects *whether* the + * policy runs, it is not part of the policy. * * **These defaults are the only defaults** (#4247). The engine reads the * parsed block field-by-field with no fallback of its own — `retryExecution` @@ -717,14 +718,14 @@ export const FlowSchema = lazySchema(() => strictObject( // is what made the divergence so durable: it looked reviewed. // // The spread is what keeps that from happening again. A key added to the - // policy lands on all four surfaces at once, instead of on the ones + // policy lands on all three surfaces at once, instead of on the ones // whoever added it happened to grep for. ...retryPolicyShape(), // The ONE site-specific override, and it is prose only — same type, same // bounds, same default, all still single-sourced above. `.describe()` // lands in `content/docs/references/`, and the flow surface has a reading - // the other three do not: the count is read only under `strategy: + // the other two do not: the count is read only under `strategy: // 'retry'`, where the `superRefine` below then requires >= 1 (#4247). // Default 0 = "no retries" is the right reading for the two strategies // that never retry; under `'retry'` it would mean "retry, zero times",