Files
Ruben Fiszel dce247c6d2 feat(pipeline): write-audit-publish for materialization data tests (#9911)
* feat(pipeline): write-audit-publish for materialization data tests (EE)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: EE worktree E0583 troubleshooting + duckdb feature check row

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: clarify EE symlink example (absolute target, EE repo layout)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(pipeline): move bootstrap DDL inside guarded WAP transaction

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(pipeline): move WAP guard SQL builder into EE, OSS keeps placement only

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: bump ee-repo-ref to EE branch rebased on EE main

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* style: reword test comment as current invariant per AGENTS.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: bump ee-repo-ref (EE module doc update)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(pipeline): OSS emits typed materialize plan, EE owns WAP transform

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: make rewrite assertion build-aware; refresh oss module doc

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: update ee-repo-ref to 7be0bad1a6d6b5c3a107c0a2cd4bf003c36ec34c

This commit updates the EE repository reference after PR #644 was merged in windmill-ee-private.

Previous ee-repo-ref: 63cabae75329429f647e01083936d70f8197dc9e

New ee-repo-ref: 7be0bad1a6d6b5c3a107c0a2cd4bf003c36ec34c

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-07-04 17:19:49 +02:00

3.1 KiB

Enterprise (EE) Development

File Conventions

  • Enterprise files use the *_ee.rs suffix
  • Source lives in windmill-ee-private (sibling repo), symlinked into each crate's src/
  • _ee.rs files are gitignored in the main windmill repo — tracked only in windmill-ee-private
  • Use feature flags: #[cfg(feature = "enterprise")] for enterprise logic
  • The private feature flag gates compilation of *_ee.rs files
  • The license feature flag gates features that require a valid license key at runtime
  • Isolate enterprise code in separate modules

Finding the EE Repo

  • Standard location: ~/windmill-ee-private
  • Worktree location: ~/windmill-ee-private__worktrees/<branch-name>/

Detecting EE Changes

The *_ee.rs files in the windmill repo are symlinks — changes won't appear in git diff of the windmill repo. Check the EE repo directly: git -C <ee-path> status --short

EE PR Workflow (MUST DO whenever the change has an EE companion PR)

If your work requires any change in windmill-ee-private (modifying *_ee.rs files, adding new ones, adjusting EE-only modules, etc.) — i.e. you need to open a companion PR on windmill-ee-private — then the windmill (OSS) PR counts as an EE PR even when its own git diff only touches backend/ee-repo-ref.txt. The symlinked *_ee.rs files won't appear in the OSS diff, but the OSS build pulls them in via the EE ref, so reviewers need to know.

  1. Prefix the windmill PR title with [ee]: [ee] <type>: <description>
  2. Create a matching branch in windmill-ee-private (same branch name)
  3. Commit and push the _ee.rs changes in that branch
  4. Create a companion PR on windmill-ee-private with a link to the windmill PR (no [ee] prefix on this one)
  5. Update ee-repo-ref.txt: Run bash write_latest_ee_ref.sh from backend/
    • Verify it wrote the correct commit hash from your branch, not from main (the script may fall back to ~/windmill-ee-private on main)
    • If wrong, manually write the correct hash
  6. Commit ee-repo-ref.txt in the windmill repo so CI picks up the correct EE ref

Validation

# EE code (always include private to compile *_ee.rs files)
cargo check --features enterprise,private

# EE code that also requires license validation
cargo check --features enterprise,private,license

Troubleshooting

E0583: file not found for module <x>_ee on cargo check --features enterprise,private: the EE worktree is behind the OSS code it must satisfy. Fast-forward it to EE origin/main — EE worktrees are shallow clones, so run git fetch --unshallow origin first or the merge fails with "refusing to merge unrelated histories". After the fast-forward, any *_ee.rs file that is new since the worktree was created still needs its OSS symlink made by hand (worktree setup only links files that existed then). The EE repo has no backend/ prefix — crates sit at its root. Use an absolute target (a relative one would resolve against the link's directory, not your cwd):

# from the windmill repo root
ln -s ~/windmill-ee-private/<crate>/src/<x>_ee.rs backend/<crate>/src/<x>_ee.rs