Skip to content

feat(orchestration)!: orchestration names join the global unique-name check - #1394

Merged
kvlonge merged 7 commits into
mainfrom
feat/orchestration-names
Nov 10, 2026
Merged

kvlonge merged 7 commits into
mainfrom
feat/orchestration-names

Conversation

@kvlonge

@kvlonge kvlonge commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Why

Job, job group, sensor and calendar schedule names could collide with models, sources and each other, so selectors and the web UI could not tell them apart. Publication is where the declarations and the project graph both exist, so the check belongs there.

Changes

  • Orchestration declarations join the project's global unique-name check. Publication refuses a collision with D007, the same error discovery raises for models and sources. The message now ends "; rename one of them" and, when a job, group, sensor or calendar is involved, says how to rename it. The narrower duplicate-job and duplicate-trigger checks are removed; the object-identity check stays.
  • build_orchestration_snapshot and sqlbuild.orchestration.compile_snapshot take a required discovered_inputs keyword.
  • Fixtures and the deploy example whose jobs reused model names are renamed. DuckShop gains a name-collision edge case.
  • Control API, stored snapshots and the TypeScript client are unchanged.

Upgrade note: a project whose job shares a model's name, or whose calendar functions share a name across targets, is now refused at publish. Rename the declaration.

Verification

On 88ffc9e (merged with main): make check-ci passes and fensu reports no faults. test_select_by_name.py, the publication integration files, test_orchestration_snapshot.py and the discovery unit tests: 317 passed, 2 skipped. Rust project_validation and discovery tests passed before the main merge.

BEGIN_COMMIT_OVERRIDE
feat(orchestration)!: job, job group, sensor and calendar schedule names join the project's global unique-name check

BREAKING CHANGE: publication refuses an orchestration declaration whose name matches a model, source or another declaration with D007. Rename the declaration before upgrading.
END_COMMIT_OVERRIDE

…bal unique-name check

Publication now rejects a job, job group, sensor or calendar schedule whose
name is already used by any other project resource or orchestration
declaration, with the same D007 conflict discovery raises for models,
sources and the rest. The narrower duplicate-job and duplicate-trigger
checks are removed; the object-identity check stays.

build_orchestration_snapshot and compile_snapshot take the discovered
project inputs so publication can build the full name set.

Fixtures whose jobs reused model names are renamed, and DuckShop gains a
name-collision edge case.
A name conflict already names both declarations and their files. It now
ends with how to resolve it, and when a job, job group, sensor or calendar
schedule is involved, says where that name comes from: a job, group or
sensor takes it from its first argument, a calendar schedule from the
function it decorates.
…onflicts

The name check now gathers every declaration as a named record and then
scans them once, instead of threading a mutable map through a helper.
The first conflict found is the same.
@kvlonge kvlonge added the full-verify Run the full Verify matrix on this pull request label Nov 9, 2026
@kvlonge
kvlonge enabled auto-merge (squash) November 9, 2026 18:01
@kvlonge
kvlonge disabled auto-merge November 9, 2026 21:17
@kvlonge
kvlonge enabled auto-merge (squash) November 10, 2026 00:13
@kvlonge
kvlonge merged commit cfd29ca into main Nov 10, 2026
50 checks passed
@kvlonge
kvlonge deleted the feat/orchestration-names branch November 10, 2026 02:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-verify Run the full Verify matrix on this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant