Skip to content

Commit 07572aa

Browse files
committed
feat(spec): stamp flow-decision-mode-inclusive-explicit retiredAfter 17.4.0; pin the refusal list read before it
The entry landed with #15429 after this branch forked; it is in no published tarball, so it carries the package label. The door still refuses it inside its own per-entry window, because DEFAULT_FLIPS_NOT_REPLAYED_HERE is read first. Claude-Session: https://claude.ai/code/session_01ARcDurZ5j34RdqsGgc4jgH Co-authored-by: Claude <noreply@anthropic.com>
1 parent 4cc1b3b commit 07572aa

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

‎packages/metadata-core/src/artifact-forward-conversion.test.ts‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,22 @@ describe('the artifact door never writes `mode: inclusive` onto an authored excl
619619
expect(Object.keys(registered.config ?? {}), 'what registration receives').not.toContain('mode');
620620
});
621621

622+
/**
623+
* [#20390] The per-entry window does not reopen it either. The entry is
624+
* stamped `retiredAfter: '17.4.0'`, so a ^17.4.0 floor on a runtime still
625+
* labelled 17.4.0 is inside ITS per-entry window — and the door's refusal
626+
* list is still read first, before any version is.
627+
*/
628+
it('stays refused inside the per-entry window too — the refusal list is read before retiredAfter', () => {
629+
const def = twoBranchDecisionDefinition('^17.4.0');
630+
const result = applyArtifactForwardConversions(def, { runtimeSpecVersion: '17.4.0' });
631+
632+
// ⭐ ANTI-VACUITY: the per-entry window really is open on this input.
633+
expect(result.verdict).toBe('converted-retired-after');
634+
expect(verdictNodeOf(result.definition).config).toBeUndefined();
635+
expect(result.notices.map((n) => n.conversionId)).not.toContain(ID);
636+
});
637+
622638
it('floor ^99.0.0 — the window is shut and nothing is replayed at all', () => {
623639
const def = twoBranchDecisionDefinition('^99.0.0');
624640
const result = applyArtifactForwardConversions(def, { runtimeSpecVersion: '17.4.0' });

‎packages/spec/src/conversions/registry.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12038,6 +12038,7 @@ const flowDecisionModeInclusiveExplicit: MetadataConversion = {
1203812038
id: 'flow-decision-mode-inclusive-explicit',
1203912039
toMajor: 18,
1204012040
retiredFromLoadPath: true,
12041+
retiredAfter: '17.4.0',
1204112042
surface: 'flow.nodes[].config.mode (decision)',
1204212043
summary:
1204312044
"edge-branched decision with two or more conditioned out-edges and no `mode`: `mode: 'inclusive'` written "

0 commit comments

Comments
 (0)