Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
d6423c1
fix(workflows): namespace nested descendant step ids in loops/fan-out
Noor-ul-ain001 Aug 26, 2026
c1d7eca
fix(workflows): namespace loop iteration 0 and alias immediately, not…
Noor-ul-ain001 Sep 2, 2026
7365250
fix(workflows): stop double-renaming loop bodies and unsafe fan-out a…
Noor-ul-ain001 Sep 13, 2026
a8188b6
fix(workflows): stop ChainMap from breaking steps.* expressions in fa…
Noor-ul-ain001 Sep 13, 2026
e888927
fix(workflows): fix two combined fan-out aliasing edge cases
Noor-ul-ain001 Sep 15, 2026
7370cb2
Refactor loop to iterate directly over reserved_step_ids
Noor-ul-ain001 Sep 18, 2026
6714b58
fix(workflows): propagate isolation into fan-out steps nested in fan-out
Noor-ul-ain001 Sep 19, 2026
1088237
Refactor alias record updates in engine.py
Noor-ul-ain001 Sep 22, 2026
2782bdf
fix(workflows): repair fan-out alias publish after autofix
Noor-ul-ain001 Sep 23, 2026
6f4910f
Merge upstream/main into fix/nested-step-id-namespace-collision
Noor-ul-ain001 Sep 24, 2026
54a03a2
fix(workflows): keep enclosing item after nested fan-out; fix test im…
Noor-ul-ain001 Sep 24, 2026
1422af0
test(workflows): cover reserved-id collision through engine.execute()
Noor-ul-ain001 Sep 24, 2026
7265432
test(workflows): cover switch and do-while descendant namespacing
Noor-ul-ain001 Sep 26, 2026
c031990
fix(workflows): expose reserved aliases after nested fan-out in seque…
Noor-ul-ain001 Sep 30, 2026
a8b1030
perf(workflows): journal reserved-id writes lazily in sequential fan-out
Noor-ul-ain001 Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/specify_cli/workflows/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,15 @@ class StepContext:
#: Source directory of the workflow definition file.
workflow_dir: str | None = None

#: Every step id declared in the workflow OUTSIDE a fan-out template
#: (computed once per run from the workflow definition). Fan-out
#: templates are deliberately exempt from the global id-uniqueness
#: check, so a bare id inside one can collide with a real, distinct
#: step id in this set; the engine checks membership here before
#: writing a fan-out alias to a bare id, so that write can never
#: silently clobber an unrelated step's result.
reserved_step_ids: frozenset[str] = field(default_factory=frozenset)


@dataclass
class StepResult:
Expand Down
Loading
Loading