# Parts and revisions > Part kinds, the revision lifecycle, released means immutable. A **part** is anything you build, buy or stock. A **revision** is one version of a part's design. This page explains both, because every other part of BuildTrace hangs off them. You work with parts and revisions in **Parts & BOMs**. Create a part with `createPart`. Create a revision with `createRevision`. ## Part kinds Every part has one of three kinds. The kind decides how BuildTrace tracks stock of the part. | Kind | What it is | How it is tracked | |---|---|---| | `RAW` | Bulk material such as resin, wire or screws | By quantity, per location and lot | | `COMPONENT` | A bought-in or made item you count one by one | By serial number | | `ASSEMBLY` | Something you build from other parts | By serial number | `COMPONENT` and `ASSEMBLY` parts are serialized: each unit has its own serial number and its own history. `RAW` parts are tracked by quantity only. See [Inventory](https://dev.buildtrace.eu/docs/concepts/inventory.md) and [Serials](https://dev.buildtrace.eu/docs/concepts/serials.md). You can change a part's kind later with `reclassifyPart`. ## Revisions A part can have many revisions. Each one has a label that you choose, such as `A`, `B` or `v2`. A part cannot have two revisions with the same label. A revision has one of two statuses: - `DRAFT`: you can still change its BOM and process. - `RELEASED`: it is final. Open the **Revisions** tab to see every revision of the selected part, its status and its release date. Select **New revision** to create a draft. You can copy the BOM from an earlier revision when you do. ## Released means immutable Selecting **Release** is permanent. A `RELEASED` revision is `immutable`: you can't edit its BOM lines, and you can't change its work instructions or test plan. The database blocks the edit, not only the screen. Release a revision with `releaseRevision`. Two rules apply: - Every child revision that the BOM pins must already be released. If not, the release fails and lists the ones to release first. - Only a `DRAFT` revision can be released. ## Changing a released revision Because a released revision can't change, you have two ways to move forward: - Create a new revision. Copy the old one and edit the copy. - Raise a change order against the released revision. See [Change orders](https://dev.buildtrace.eu/docs/concepts/change-orders.md). Re-baselining combines both. It folds the change orders that are in force into a new draft revision. See [Change orders](https://dev.buildtrace.eu/docs/concepts/change-orders.md). ## Compare two revisions On the **Revisions** tab, choose two revisions and select **Compare**. BuildTrace lists the parts that were added, removed or changed between them. See [Bills of materials](https://dev.buildtrace.eu/docs/concepts/boms.md).