diff --git a/README.md b/README.md
index 00a20cf..383cfd2 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-
+
@@ -113,13 +113,20 @@ helm install weft oci://ghcr.io/alethic/charts/weft \
--namespace weft-system --create-namespace
```
-Pin a version with `--version` for anything you care about. Builds of `main`
-are also published as prereleases; add `--devel` to install the newest one.
+That installs the latest release. Add `--version` with a version from the
+[releases page](https://github.com/alethic/weft/releases) to pin one, which is
+what you want anywhere you care about repeatability.
-The controller image (`ghcr.io/alethic/weft`) and the chart are both signed
-with [cosign](https://github.com/sigstore/cosign), keyless. Each
-[release](https://github.com/alethic/weft/releases) lists the image digest and
-the command to verify it. A released chart pins the image by digest.
+Each chart pins the controller image (`ghcr.io/alethic/weft`) by digest, so an
+installed release cannot drift under a moved tag. The image and the chart are
+both signed with [cosign](https://github.com/sigstore/cosign), keyless, and
+each release lists the image digest. To verify an image before you run it:
+
+```bash
+cosign verify ghcr.io/alethic/weft@ \
+ --certificate-identity-regexp '^https://github.com/alethic/weft/' \
+ --certificate-oidc-issuer https://token.actions.githubusercontent.com
+```
Every chart value is documented in [charts/weft/README.md](charts/weft/README.md),
including hardening options such as confining impersonation to a set of
@@ -188,26 +195,9 @@ workloads.
| [Operating Weft](docs/operating.md) | status conditions, pruning, teardown, controller flags, metrics, uninstalling |
| [Design and alternatives](docs/design.md) | how Weft compares with kro, Crossplane, Flux and Kyverno; why Starlark; non-goals |
| [Helm chart](charts/weft/README.md) | installation, every value, common configurations |
-| [Moving from weft.run](docs/migrating.md) | for installations that predate `weft.alethic.solutions/v1` |
+| [Moving from weft.run](docs/migrating.md) | for installations that use the older `weft.run` API group |
| [Security](SECURITY.md) | threat model, hardening, reporting a vulnerability |
-## Project status
-
-The API is `weft.alethic.solutions/v1`. Weft itself is pre-1.0, so the
-controller, the chart and their defaults may still change between minor
-releases. Every such change is called out in the release notes.
-
-Weft was first deployed under the API group `weft.run/v1alpha1`. That group is
-still served alongside v1, with the same schema, so existing installations
-upgrade without changing anything and can move their Weaves to v1 one at a
-time. [docs/migrating.md](docs/migrating.md) explains how. Both groups are
-served until a future release removes `weft.run`.
-
-CI runs the reconcile loop against a real API server on Kubernetes 1.27 (the
-minimum supported), 1.33 and 1.37, alongside unit tests of the evaluator and
-planner, rendering tests of the Helm chart, and a check that every shipped
-example evaluates.
-
## Contributing
Issues and pull requests are welcome. [CONTRIBUTING.md](CONTRIBUTING.md) covers
diff --git a/charts/weft/README.md b/charts/weft/README.md
index adbaf1d..2b2ff02 100644
--- a/charts/weft/README.md
+++ b/charts/weft/README.md
@@ -15,16 +15,17 @@ helm install weft oci://ghcr.io/alethic/charts/weft \
```
The chart lives in GitHub Packages as an OCI artifact. Without `--version`,
-Helm resolves the newest release; pin an exact `--version` for anything you
-care about. Every build of `main` is also published as a prerelease
-(`0.1.1-pre.3` and so on), which Helm only considers with `--devel`.
+Helm installs the latest release; pin an exact `--version` from the
+[releases page](https://github.com/alethic/weft/releases) for anything you
+care about. Builds of `main` between releases are published as prereleases, which Helm
+only considers with `--devel`.
```bash
helm show chart oci://ghcr.io/alethic/charts/weft
```
The chart's `appVersion` selects the image tag, so a chart and the controller it
-installs always carry the same version. A released chart additionally pins
+installs always carry the same version. A published chart additionally pins
the image by digest, so it cannot drift under a moved tag. That digest ships in
the chart itself rather than in its values, so `helm upgrade --reuse-values`
still moves you to the new release's image.