From 9f2147536a30789c641b1897eb17264d002c18ff Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Sun, 25 Jan 2026 23:35:54 +0100 Subject: [PATCH 01/12] first draft sans commit info --- docs/workspace/lockfile.md | 124 +++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 1a1643cdea..1dea18b02e 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -2,9 +2,70 @@ ## What is a lock file? -A lock file locks the environment in a specific state. +To explain this, we need to highlight the difference between the manifest and the lock file. + +The manifest lists the direct dependencies of your project. +When you install your environment, this manifest goes through "dependency resolution": all the dependencies of your requested dependencies are found, et cetera all the way down. +During the resolution process, its ensured that resolved versions are compatible with each other. + +A lock file lists the exact dependencies that were resolved during this resolution process - the packages, their versions, and other useful information useful for package management. + +A lock file improves reproducibility as it means the project environment can easily be recreated on the same machine using this relatively small file. +Whether the lockfile can be recreated on other machines, however, depends on the package manager and whether they have cross platform support. +For example - a common problem encountered is when a package manager installs a package for a specific operating system or CPU architecture that is incompatible with other OSs or hardware. + +!!! Warning "Do not edit the lock file" + A lock file is a machine only file, and should not be edited by hand. + + +## Lock files in Pixi + +Pixi - like many other modern package managers - has native support for lock files. This file is named `pixi.lock` . + +During the creation of the lockfile, Pixi resolves the packages - for all environments, for all supported platforms. +This greatly increases the reproducibility of your project making it easy to use on different OSs or CPU architectures - in fact, for a lot of cases, sharing a lockfile can be done instead of sharing a Docker container! This is super handy for running code in CI. + +The Pixi lock file is also human readable, so you can take a poke around to see which packages are listed - as well as track changes to the file (don't make edits to it - you did read the warning block above right?). + +## Lock file changes + +Many Pixi commands will create a lock file if one doesn't already exist, or update it if needed. For example, when you install a package, Pixi goes through the following process: + +- User requests a package to be installed +- Dependency resolution +- Generating and writing of lock file +- Install resulting packages + +Additionally - Pixi ensures that the lock file remains in sync with both your manifest, as well as your installed environment. +If we detect that they aren't in sync, we will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#Lock-file-satisfiability) section. + +The following commands will check and automatically update the lock file if needed: + +- `pixi install` +- `pixi run` +- `pixi shell` +- `pixi shell-hook` +- `pixi tree` +- `pixi list` +- `pixi add` +- `pixi remove` + +If you want to remove the lock file, you can simply delete it - ready for it to be generated again with the latest package versions when one of the above commands are run. + +You may want to have more control over the interplay between the manifest, the lock file, and the created environment. There are additional command line options to help with this: + +- `--frozen`: install the environment as defined in the lock file, doesn't update `pixi.lock` if it isn't up-to-date with [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_FROZEN` environment variable (example: `PIXI_FROZEN=true`). +- `--locked`: only install if the `pixi.lock` is up-to-date with the [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_LOCKED` environment variable (example: `PIXI_LOCKED=true`). Conflicts with `--frozen`. + + + +### File structure + +The Pixi lock file describes the following: + +- Within Pixi a lock file is a description of the packages in an environment. -The lock file contains two definitions: +The lock file is : - The environments that are used in the workspace with their complete set of packages. e.g.: @@ -54,57 +115,6 @@ The lock file contains two definitions: timestamp: 1708118065292 ``` -## Why a lock file - -Pixi uses the lock file for the following reasons: - -- To save a working installation state, without copying the entire environment's data. -- To ensure the workspace configuration is aligned with the environment. -- To give the user a file that contains all the information about the environment. - -This gives you (and your collaborators) a way to really reproduce environment they are working in. -Using tools such as docker suddenly becomes much less necessary. - -## When is a lock file generated? - -A lock file is generated when you install a package. -More specifically, a lock file is generated from the solve step of the installation process. -The solve will return a list of packages that are to be installed, and the lock file will be generated from this list. -This diagram tries to explain the process: - -```mermaid -graph TD - A[Install] --> B[Solve] - B --> C[Generate and write lock file] - C --> D[Install Packages] -``` - -## How to use a lock file - -!!! Warning "Do not edit the lock file" - A lock file is a machine only file, and should not be edited by hand. - -That said, the `pixi.lock` is human-readable, so it's easy to track the changes in the environment. -We recommend you track the lock file in `git` or other version control systems. -This will ensure that the environment is always reproducible and that you can always revert back to a working state, in case something goes wrong. -The `pixi.lock` and the manifest file `pixi.toml`/`pyproject.toml` should always be in sync. - -Running the following commands will check and automatically update the lock file if you changed any dependencies: - -- `pixi install` -- `pixi run` -- `pixi shell` -- `pixi shell-hook` -- `pixi tree` -- `pixi list` -- `pixi add` -- `pixi remove` - -All the commands that support the interaction with the lock file also include some lock file usage options: - -- `--frozen`: install the environment as defined in the lock file, doesn't update `pixi.lock` if it isn't up-to-date with [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_FROZEN` environment variable (example: `PIXI_FROZEN=true`). -- `--locked`: only install if the `pixi.lock` is up-to-date with the [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_LOCKED` environment variable (example: `PIXI_LOCKED=true`). Conflicts with `--frozen`. - !!! Note "Syncing the lock file with the manifest file" The lock file is always matched with the whole configuration in the manifest file. This means that if you change the manifest file, the lock file will be updated. @@ -161,15 +171,11 @@ But take note of the following: - It also allows you to go back to a working state if you have made a mistake. - It helps other users onboard to your workspace as they don't have to figure out the environment setup or solve dependency issues. -## Removing the lock file -If you want to remove the lock file, you can simply delete it. -```bash -rm pixi.lock -``` +--- -This will remove the lock file, and the next time you run a command that requires the lock file, it will be generated again. +Not sure what this means??? !!! Warning "Note" This does remove the locked state of the environment, which will be updated to the latest version of all packages. From b3bb9a1c67eb0811dac7b12e3f0e4a8c5c9b8a6f Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Sun, 25 Jan 2026 23:54:11 +0100 Subject: [PATCH 02/12] Add section on committing --- docs/workspace/lockfile.md | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 1dea18b02e..56c6c26186 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -58,7 +58,54 @@ You may want to have more control over the interplay between the manifest, the l - `--locked`: only install if the `pixi.lock` is up-to-date with the [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_LOCKED` environment variable (example: `PIXI_LOCKED=true`). Conflicts with `--frozen`. +## Commiting your lockfile +Reprodicibility is very important in a range of projects (e.g., deploying software services, working on research projects, data analysis). Reproducibility of environments helps with reproducibility of results - it ensures your developers, and deployment machines are all using the same packages. + +You may be hesitant to commit a "large" file (`pixi.lock` files can reach over 30,000 lines for complex environments), but know that: +- this file is only a few megabytes at most +- lock file merges are managed reasonably well by Git + +There is, however, a class of projects where you may not want to commit your lock file as there are other considerations at play. +Namely, this is when developing _libraries_. + +--- + +Libraries have an evolving nature and need to be tested against environments covering a wide range of package versions to ensure compatibility. +This includes an environment with the latest available versions of packages. + +### Libraries: Committing the lockfile + +If you commit the lock file in your library project, you will want to also consider the following: +- **Upgrading the lockfile:** How often do you want to upgrade the lockfile used by your developers? Do you want to do these upgrades in the main repo history? +- **Custom CI workflow to test against latest versions:** Do you want to have a workflow to test against the latest dependency versions? If so - you likely want to have the following CI workflow on a cron schedule: + - Remove the `pixi.lock` before running the `setup-pixi` action + - Run your tests + - If the tests fail: + - See how the generated `pixi.lock` differs from that in `main` by using `pixi-diff` and `pixi-diff-to-markdown` + - Automatically file an issue so that its tracked in the project repo + +You can see how these considerations above have been explored by the following projects: +- [Scipy](LINK) +- + +### Libraries: Git-ignoring the lockfile + +If you don't commit the lockfile, you end up with a simplified setup where the lockfile is generated separately for all developers, and for CI. + +In CI, you can avoid the need to solve on every workflow run by caching this lockfile so that its shared between CI on the same day by using - for example - the [Parcels-code/pixi-lock](https://github.com/parcels-code/pixi-lock) action. + +This simplified setup forgoes reproducibility between machines, and implicitly + +--- + +See the following threads for more detailed discussion on this topic: +- [prefix.dev Discord: Should you commit the lockfile](https://discord.com/channels/1082332781146800168/1462778624212996209) +- [Scientific Python Discord: lock files for libraries](https://discord.com/channels/786703927705862175/1450619697224487083) +- https://github.com/prefix-dev/pixi/issues/5325 + + +### Developing libraries ### File structure The Pixi lock file describes the following: From 862e3a1aed30657f9b3a922e46ae109c76dc6b90 Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Mon, 26 Jan 2026 00:01:17 +0100 Subject: [PATCH 03/12] Cleanup now redundant sections --- docs/workspace/lockfile.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 56c6c26186..9403a69c64 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -2,7 +2,7 @@ ## What is a lock file? -To explain this, we need to highlight the difference between the manifest and the lock file. +To answer this question, we need to highlight the difference between the manifest and the lock file. The manifest lists the direct dependencies of your project. When you install your environment, this manifest goes through "dependency resolution": all the dependencies of your requested dependencies are found, et cetera all the way down. @@ -105,6 +105,9 @@ See the following threads for more detailed discussion on this topic: - https://github.com/prefix-dev/pixi/issues/5325 +!!! Warning "TODO: Everything below here still WIP" + + ### Developing libraries ### File structure From 120e377583a2f28f38d8e7edbc9ae7a31aacf9fc Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Mon, 26 Jan 2026 00:17:11 +0100 Subject: [PATCH 04/12] typos --- docs/workspace/lockfile.md | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 9403a69c64..063ae582c7 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -58,9 +58,9 @@ You may want to have more control over the interplay between the manifest, the l - `--locked`: only install if the `pixi.lock` is up-to-date with the [manifest file](../reference/pixi_manifest.md). It can also be controlled by the `PIXI_LOCKED` environment variable (example: `PIXI_LOCKED=true`). Conflicts with `--frozen`. -## Commiting your lockfile +## Committing your lockfile -Reprodicibility is very important in a range of projects (e.g., deploying software services, working on research projects, data analysis). Reproducibility of environments helps with reproducibility of results - it ensures your developers, and deployment machines are all using the same packages. +Reproducibility is very important in a range of projects (e.g., deploying software services, working on research projects, data analysis). Reproducibility of environments helps with reproducibility of results - it ensures your developers, and deployment machines are all using the same packages. You may be hesitant to commit a "large" file (`pixi.lock` files can reach over 30,000 lines for complex environments), but know that: - this file is only a few megabytes at most @@ -105,10 +105,7 @@ See the following threads for more detailed discussion on this topic: - https://github.com/prefix-dev/pixi/issues/5325 -!!! Warning "TODO: Everything below here still WIP" - -### Developing libraries ### File structure The Pixi lock file describes the following: @@ -202,25 +199,6 @@ version: 6 Pixi is backward compatible with the lock file, but not forward compatible. This means that you can use an older lock file with a newer version of `pixi`, but not the other way around. -## Your lock file is big - -The lock file can grow quite large, especially if you have a lot of packages installed. -This is because the lock file contains all the information about the packages. - -1. We try to keep the lock file as small as possible. -2. It's always smaller than a docker image. -3. Downloading the lock file is always faster than downloading the incorrect packages. - -## You don't need a lock file because... - -If you can not think of a case where you would benefit from a fast reproducible environment, then you don't need a lock file. - -But take note of the following: - -- A lock file allows you to run the same environment on different machines, think CI systems. -- It also allows you to go back to a working state if you have made a mistake. -- It helps other users onboard to your workspace as they don't have to figure out the environment setup or solve dependency issues. - --- From 7f07c0676e3e5277652878670919f12912d0b269 Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:40:18 +0100 Subject: [PATCH 05/12] Review feedback --- docs/workspace/lockfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 063ae582c7..f86c37519d 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -77,7 +77,7 @@ This includes an environment with the latest available versions of packages. ### Libraries: Committing the lockfile If you commit the lock file in your library project, you will want to also consider the following: -- **Upgrading the lockfile:** How often do you want to upgrade the lockfile used by your developers? Do you want to do these upgrades in the main repo history? +- **Upgrading the lockfile:** How often do you want to upgrade the lockfile used by your developers? Do you want to do these upgrades in the main repo history? Do you want to manage this lockfile via (e.g.,) [the Renovate Bot](https://docs.renovatebot.com/modules/manager/pixi/) or via a custom CI job? - **Custom CI workflow to test against latest versions:** Do you want to have a workflow to test against the latest dependency versions? If so - you likely want to have the following CI workflow on a cron schedule: - Remove the `pixi.lock` before running the `setup-pixi` action - Run your tests From 5050ee7a14528d14f30df0319176fbd0c46f07be Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:46:04 +0100 Subject: [PATCH 06/12] Update mention to scipy lock file strategy --- docs/workspace/lockfile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index f86c37519d..2cf67750b3 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -86,8 +86,8 @@ If you commit the lock file in your library project, you will want to also consi - Automatically file an issue so that its tracked in the project repo You can see how these considerations above have been explored by the following projects: -- [Scipy](LINK) -- +- Scipy (being explored - will update with PR link once available. [Issue](https://github.com/scipy/scipy/issues/23637)) + ### Libraries: Git-ignoring the lockfile From 264537f85905a3a491555fe4b20d6fa50613e2b8 Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:49:22 +0100 Subject: [PATCH 07/12] Review feedback --- docs/workspace/lockfile.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 2cf67750b3..33c170df7b 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -60,11 +60,10 @@ You may want to have more control over the interplay between the manifest, the l ## Committing your lockfile -Reproducibility is very important in a range of projects (e.g., deploying software services, working on research projects, data analysis). Reproducibility of environments helps with reproducibility of results - it ensures your developers, and deployment machines are all using the same packages. +Reproducibility is very important in a range of projects (e.g., deploying software services, working on research projects, data analysis). +Reproducibility of environments helps with reproducibility of results - it ensures your developers, and deployment machines are all using the same packages. -You may be hesitant to commit a "large" file (`pixi.lock` files can reach over 30,000 lines for complex environments), but know that: -- this file is only a few megabytes at most -- lock file merges are managed reasonably well by Git +You may be hesitant to commit a "large" file (`pixi.lock` files can be thousands of lines for complex environments), but know that the raw size of this file is still relatively small, and that lock file merges are managed reasonably well by Git. There is, however, a class of projects where you may not want to commit your lock file as there are other considerations at play. Namely, this is when developing _libraries_. From 6fd4404c11cd23aac40dbe2638a80164fab2deaa Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:01:25 +0100 Subject: [PATCH 08/12] Copy edits --- docs/workspace/lockfile.md | 42 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 33c170df7b..f260df68da 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -22,8 +22,9 @@ For example - a common problem encountered is when a package manager installs a Pixi - like many other modern package managers - has native support for lock files. This file is named `pixi.lock` . -During the creation of the lockfile, Pixi resolves the packages - for all environments, for all supported platforms. -This greatly increases the reproducibility of your project making it easy to use on different OSs or CPU architectures - in fact, for a lot of cases, sharing a lockfile can be done instead of sharing a Docker container! This is super handy for running code in CI. +During the creation of the lockfile, Pixi resolves the packages - for all environments and platforms listed in the manifest. +This greatly increases the reproducibility of your project making it easy to use on different OSs or CPU architectures - in fact, for a lot of cases, sharing a lockfile can be done instead of sharing a Docker container! +This is also super handy for running code in CI. The Pixi lock file is also human readable, so you can take a poke around to see which packages are listed - as well as track changes to the file (don't make edits to it - you did read the warning block above right?). @@ -31,10 +32,10 @@ The Pixi lock file is also human readable, so you can take a poke around to see Many Pixi commands will create a lock file if one doesn't already exist, or update it if needed. For example, when you install a package, Pixi goes through the following process: -- User requests a package to be installed -- Dependency resolution -- Generating and writing of lock file -- Install resulting packages +1. User requests a package to be installed +2. Dependency resolution +3. Generating and writing of lock file +4. Install resulting packages Additionally - Pixi ensures that the lock file remains in sync with both your manifest, as well as your installed environment. If we detect that they aren't in sync, we will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#Lock-file-satisfiability) section. @@ -107,13 +108,10 @@ See the following threads for more detailed discussion on this topic: ### File structure -The Pixi lock file describes the following: +The Pixi lock file is structured into two parts. -- -Within Pixi a lock file is a description of the packages in an environment. -The lock file is : -- The environments that are used in the workspace with their complete set of packages. e.g.: +- The environments that are used in the workspace - listing the packages contained. e.g.: ```yaml environments: @@ -160,6 +158,17 @@ The lock file is : size: 14596811 timestamp: 1708118065292 ``` +### The version of the lock file + +The lock file also has a version number, this is to ensure that the lock file is compatible with the local version of `pixi`. + +```yaml +version: 6 +``` + +Pixi is backward compatible with the lock file, but not forward compatible. +This means that you can use an older lock file with a newer version of `pixi`, but not the other way around. + !!! Note "Syncing the lock file with the manifest file" The lock file is always matched with the whole configuration in the manifest file. @@ -187,17 +196,6 @@ Steps to check if the lock file is satisfiable: If you want to get more details checkout the [actual code](https://github.com/prefix-dev/pixi/blob/main/src/lock_file/satisfiability/mod.rs) as this is a simplification of the actual code. -## The version of the lock file - -The lock file has a version number, this is to ensure that the lock file is compatible with the local version of `pixi`. - -```yaml -version: 6 -``` - -Pixi is backward compatible with the lock file, but not forward compatible. -This means that you can use an older lock file with a newer version of `pixi`, but not the other way around. - --- From cf18cd4533e50801820925a7b611df6cc8ffd75b Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:02:57 +0100 Subject: [PATCH 09/12] Remove parts These are covered now in the other sections. --- docs/workspace/lockfile.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index f260df68da..e37526b7b9 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -170,14 +170,6 @@ Pixi is backward compatible with the lock file, but not forward compatible. This means that you can use an older lock file with a newer version of `pixi`, but not the other way around. -!!! Note "Syncing the lock file with the manifest file" - The lock file is always matched with the whole configuration in the manifest file. - This means that if you change the manifest file, the lock file will be updated. - ```mermaid - flowchart TD - C[manifest] --> A[lock file] --> B[environment] - ``` - ## Lock file satisfiability The lock file is a description of the environment, and it should always be satisfiable. @@ -196,11 +188,3 @@ Steps to check if the lock file is satisfiable: If you want to get more details checkout the [actual code](https://github.com/prefix-dev/pixi/blob/main/src/lock_file/satisfiability/mod.rs) as this is a simplification of the actual code. - - ---- - -Not sure what this means??? - -!!! Warning "Note" - This does remove the locked state of the environment, which will be updated to the latest version of all packages. From bde204093265dd9faae317909a2149d6df022b28 Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:07:43 +0100 Subject: [PATCH 10/12] Minor changes --- docs/workspace/lockfile.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index e37526b7b9..9086543c77 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -6,9 +6,9 @@ To answer this question, we need to highlight the difference between the manifes The manifest lists the direct dependencies of your project. When you install your environment, this manifest goes through "dependency resolution": all the dependencies of your requested dependencies are found, et cetera all the way down. -During the resolution process, its ensured that resolved versions are compatible with each other. +During the resolution process, it is ensured that resolved versions are compatible with each other. -A lock file lists the exact dependencies that were resolved during this resolution process - the packages, their versions, and other useful information useful for package management. +A lock file lists the exact dependencies that were resolved during this resolution process - the packages, their versions, and other metadata useful for package management. A lock file improves reproducibility as it means the project environment can easily be recreated on the same machine using this relatively small file. Whether the lockfile can be recreated on other machines, however, depends on the package manager and whether they have cross platform support. @@ -38,7 +38,7 @@ Many Pixi commands will create a lock file if one doesn't already exist, or upda 4. Install resulting packages Additionally - Pixi ensures that the lock file remains in sync with both your manifest, as well as your installed environment. -If we detect that they aren't in sync, we will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#Lock-file-satisfiability) section. +If we detect that they aren't in sync, we will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#lock-file-satisfiability) section. The following commands will check and automatically update the lock file if needed: From b7b81e7a5ace7be7c140aeda10993e5d1d473608 Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:12:07 +0100 Subject: [PATCH 11/12] Finish sentence --- docs/workspace/lockfile.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 9086543c77..75cf2016ca 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -95,7 +95,9 @@ If you don't commit the lockfile, you end up with a simplified setup where the l In CI, you can avoid the need to solve on every workflow run by caching this lockfile so that its shared between CI on the same day by using - for example - the [Parcels-code/pixi-lock](https://github.com/parcels-code/pixi-lock) action. -This simplified setup forgoes reproducibility between machines, and implicitly +This simplified setup forgoes reproducibility between machines. + +In both approaches, the test suite is used to determine whether the library is working as expected. --- From 09e12359ba668fd2a3a5e64c58568cbe1d5d242e Mon Sep 17 00:00:00 2001 From: Vecko <36369090+VeckoTheGecko@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:21:54 +0100 Subject: [PATCH 12/12] Review suggestions --- docs/workspace/lockfile.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/workspace/lockfile.md b/docs/workspace/lockfile.md index 75cf2016ca..4543217af3 100644 --- a/docs/workspace/lockfile.md +++ b/docs/workspace/lockfile.md @@ -15,8 +15,7 @@ Whether the lockfile can be recreated on other machines, however, depends on the For example - a common problem encountered is when a package manager installs a package for a specific operating system or CPU architecture that is incompatible with other OSs or hardware. !!! Warning "Do not edit the lock file" - A lock file is a machine only file, and should not be edited by hand. - + A lock file is built for machines, and made human readable for easy inspection. It's not meant to be edited by hand. ## Lock files in Pixi @@ -38,7 +37,7 @@ Many Pixi commands will create a lock file if one doesn't already exist, or upda 4. Install resulting packages Additionally - Pixi ensures that the lock file remains in sync with both your manifest, as well as your installed environment. -If we detect that they aren't in sync, we will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#lock-file-satisfiability) section. +If it detects that they aren't in sync, it will regenerate the lock file. You can read more about this in the [Lock file satisfiability](#lock-file-satisfiability) section. The following commands will check and automatically update the lock file if needed: