Skip to content

GEN-30: default package overrides - #10

Merged
DenisDupeyron merged 4 commits into
mainfrom
GEN-30_default_package_overrides
Aug 10, 2026
Merged

DenisDupeyron merged 4 commits into
mainfrom
GEN-30_default_package_overrides

Conversation

@DenisDupeyron

Copy link
Copy Markdown
Collaborator

No description provided.

@DenisDupeyron
DenisDupeyron force-pushed the GEN-30_default_package_overrides branch from 1fc86e0 to 04b677c Compare August 8, 2026 04:18
@DenisDupeyron
DenisDupeyron force-pushed the GEN-30_default_package_overrides branch from 04b677c to ae573d6 Compare August 8, 2026 04:20

**Acceptance Scenarios**:

1. **Given** the user's `.condarc` configures `create_default_packages` to a list, and no per-invocation packages are named, **When** an ephemeral environment is created, **Then** its Effective Package Set is exactly that list.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This differs from my thought process. I was thinking that the effective package list would be a merge of allez defaults plus create_default_packages.

Concretely, this would be my suggestion

Baseline, allez has a default package list of something like this: python, pydantic, openai, numpy

Scenario 1: I often do work with data science and want some packages broadly available.

User adds polars etc to their create_default_packages. This is merged, so the final list is python, pydantic, openai, numpy when the agent runs allez oneshot -- python -c "my_command"

Scenario 2: The user wants to override the version of python for their default environment

The user adds python=3.13 as their create_default_packages

When the agent runs allez oneshot -- python -c "my_command" then the final install list is [python, pydantic, openai, numpy, python=3.13] - note that the user's list is last and has higher precedence (not intersection, we would probably need to pre-filter the list before sending it to rattler)

Scenario 3: The AI wants to use the default environment but add one or two things

The agent (which cannot modify .condarc) runs allez oneshot --default-environment python=3.14 -- python -c "my_command". This would generate the following list [python, pydantic, openai, numpy, python=3.13, python=3.14] Note that the user's create_default_packages takes higher precedence than allez' default, but the agent takes even higher precedence. In this case the final package list would be [pydantic, openai, numpy, python=3.14]

as opposed to allez oneshot python=3.13 -- python -c "my_command". The former command says "start with the default environment, then add my things as-if I were the create_default_packages. The second command says "no default environment, only my packages"

Scenario 4 - The user also wants to use conda

We should investigate this more. I wonder if mixing allez with conda and create_default_packages is going to cause problems. Maybe we also need to have the .condarc set --no-default-packages (whatever the correct .condarc entry for that looks like - if it exists - in order to override this for conda vs allez. This latter part might be - to use claude's favored language - "load bearing". If we can't have allez and conda play well together then we probably shouldn't use the same config variable. And if that is the case maybe we go back to having our own variables in .condarc (or our own .config/allez file).

Sorry for all the back and forth on this and honestly it's not the most important ticket. Whatever you decide to go with after considering all of this I'll sign off on

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't what we talked about on Friday, which was: allez has no config file, it gets its defaults from the user's .condarc via the condarc crate which it consumes, full stop. If the user wants anything as their defaults, then they add it to their .condarc. If their .condarc is broken then allez is the least of their problems because conda is also broken.

What is currently specified is exactly this, and it happens to be the lowest common denominator of all possible implementations, so I will go with that for now. We may revisit it later. This project needs to move forward, we can't keep rewriting specs forever.

Beyond that, I don't see any issue with any of the scenarios you listed above, except where they directly contradict what we talked about on Friday.

@intentionally-left-nil intentionally-left-nil Aug 9, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my point of view this is what we talked about on Friday :) Otherwise the whole conversation about create_default_packages having a higher precedence is moot.

The primary conflict if you keep things the way they are in your current spec is that create_default_packages ends up having vastly different meanings between allez and conda, to the point that a user trying to share both on the machine is going to be in for pain.

create_default_packages is supposed to be extra packages, that you want in addition to your normal stuff when used with conda

As your spec is written create_default_packages is supposed to be all of your packages. So you would need to specify python, and every tool you might think to use (or that allez might include by default for convenience).

That's fine for allez, but if you switch between conda and allez all of a sudden your conda environments are going to get everything. This is a footgun no matter what, but the more packages you add here the bigger the footgun becomes. This is why I mentioned scenario 4 above.

@DenisDupeyron
DenisDupeyron force-pushed the GEN-30_default_package_overrides branch from 1c206b0 to 1db899e Compare August 10, 2026 07:20
@DenisDupeyron

Copy link
Copy Markdown
Collaborator Author

Implementation is ready

@DenisDupeyron
DenisDupeyron merged commit 63e6b72 into main Aug 10, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants