Skip to content

Conversation

@cisaacstern
Copy link
Member

No description provided.

@cisaacstern cisaacstern marked this pull request as draft January 9, 2026 19:28
cisaacstern and others added 6 commits January 9, 2026 14:38
These files are auto-generated by setuptools-scm at build time and
should not be tracked in version control.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Configure pre-commit to run ruff linting (with auto-fix) and formatting
checks on all wt-* packages before commits.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Auto-fixes applied by ruff --fix and ruff format, including:
- Unnecessary list comprehensions (C416) converted to list()
- Import sorting (I)
- Code formatting standardization

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement the `wt-compiler compile` command to provide a user-facing
interface for compiling workflow spec.yaml files into executable
artifacts. The CLI uses argparse following the wt-registry pattern.

- Add cli.py with compile subcommand (--spec, --clobber, --update)
- Add __main__.py for `python -m wt_compiler` support
- Add entry point in pyproject.toml
- Add comprehensive unit tests (12 tests, 100% coverage on cli.py)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Mark P0.1 (wt-compiler CLI) as complete
- Update P0.2 (Discovery) status: code exists but needs e2e verification
- Update critical issues table and success criteria
- Add new CLI files to key files reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
cisaacstern and others added 30 commits January 15, 2026 11:11
- Use base_url instead of channel name in MatchSpec strings to correctly
  identify packages on custom channels (e.g., repo.prefix.dev)
- Collect and pass channels from spec requirements to populate_known_tasks()
- Always include conda-forge for base dependencies (python, libffi, etc.)
- Add virtual package detection for platform-specific requirements
- Add unit test for channel propagation

Fixes the issue where compilation failed with "No candidates found" errors
for packages on custom channels because the discovery phase only searched
conda-forge by default.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When task discovery fails because wt-registry is not installed in the
ephemeral environment, users now see a clear error message explaining:
- Which packages were installed
- Why wt-registry is missing (no dependency on it)
- How to fix it (add wt-registry as a dependency)

This is a common pitfall for workflows that haven't been migrated to
depend on wt-registry.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add docs/solutions/ for documented problem solutions
- Add docs/guides/error-handling/ with patterns and best practices
- Document wt-registry not found issue and solution
- Update CLAUDE.md to reference docs/ and guide /workflows:compound

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enable simpler usage patterns like `@register()` or `@register(tags=["io"])`
by making title and description parameters optional. Title is auto-generated
from the function name using snake_case to Title Case conversion when not
provided (e.g., "get_patrol_observations" -> "Get Patrol Observations").

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add pixi build configuration to all package pyproject.toml files
- Add pixi.toml workspace configuration
- Add build and test scripts for conda packages
- Add conda_build tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Expose DagCompiler.pkg_name_prefix as a configurable CLI argument,
allowing users to override the default "wf" prefix for generated
package names (release_name and package_name).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes template rendering by serializing importable_reference to a dict
with anchor, function, statement, and params_notebook keys. Also renames
SkipIf.known_tasks_list to known_tasks to match template expectations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add @computed_field decorator to file_header property so it's included
  in model_dump() output used by DAG templates
- Pass file_header to PixiToml constructor so header is written to pixi.toml

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The rattler 0.22 release renamed `channels` parameter to `sources` in
the solve() function. Pin to <0.23.0 for API stability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Three fixes for import path generation:

1. Use public_module_path (via __init__.py re-exports) instead of
   private module paths (e.g., 'tasks.config' not 'tasks.config._set_vars')

2. Always use 'as' clause in import statements for explicit re-export
   semantics (e.g., 'from x import y as y')

3. Fix disambiguation logic for duplicate function names from different
   modules - now correctly assigns registry_ref=1, 2, etc. to subsequent
   occurrences

Changes:
- wt-contracts: Add public_module_path field to RegistryEntry
- wt-registry: Add discover_public_paths() to traverse --package modules
  and find public re-export paths
- wt-compiler: Use public_module_path and fix disambiguation logic

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-reverse-integration Triggers reverse integration tests to be run on PRs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants