From b044c368d6e6832a92eb74126170230806550385 Mon Sep 17 00:00:00 2001 From: Danil Silantyev Date: Tue, 15 Sep 2026 17:05:47 +0500 Subject: [PATCH 1/2] chore(release): cut development bundle 0.9.5 Stamp compiler, CLI and controller to 0.9.5-dev, record the missing 0.9.3/0.9.4 changelog headings from those tags, and document that gds context binds the device-local locator as context.device. Co-authored-by: Cursor --- .gds/bundle.lock.yaml | 12 ++++++------ .gds/compiled-policy.json | 4 ++-- .github/workflows/gds-ci.yml | 4 ++-- CHANGELOG.md | 14 ++++++++++++++ README.md | 3 +++ core/cli/root.go | 2 +- core/cmd/gds-controller/main.go | 2 +- core/compiler/types.go | 2 +- docs/contracts/estate-v1.md | 4 ++++ docs/runbooks/bootstrap-device.md | 4 ++++ .../projections/control-plane/.claude/CLAUDE.md | 4 ++-- .../control-plane/.gds/bundle.lock.yaml | 16 ++++++++-------- .../control-plane/.gds/compiled-policy.json | 4 ++-- .../control-plane/.github/workflows/gds-ci.yml | 4 ++-- tests/golden/projections/control-plane/AGENTS.md | 8 ++++---- 15 files changed, 56 insertions(+), 31 deletions(-) diff --git a/.gds/bundle.lock.yaml b/.gds/bundle.lock.yaml index 2981ef0..56c77fe 100644 --- a/.gds/bundle.lock.yaml +++ b/.gds/bundle.lock.yaml @@ -2,17 +2,17 @@ schema_version: 1 bundle: - version: "0.9.4-dev" + version: "0.9.5-dev" release_sequence: 0 channel: "development" source_tree_digest: "sha256:50743872ba177cd8a1b293d497e4c2f03a21a46b9b6040594e4fb8c3fff755d5" - digest: "sha256:215167d571f0a4be0d1af3567bd49396b6069d604905dac742a6d2f633e51858" + digest: "sha256:31e824c75e938a786fcf860341b9d4bbfcc08fc365dd39d2ca77fa38285950d1" projection: - input_digest: "sha256:dc9842379e787b40c7e71830122e78ef4181c00d5d8aea46a6e5f861be631cef" - output_digest: "sha256:b05e1cdccfa2f91c474e16d065df790645d48f6d35854b2939b31a8b07864e72" + input_digest: "sha256:f5ec33d462ba78a56db5b042093b92c54cc1dd5ac98b689ae676a27de3a87165" + output_digest: "sha256:dabf32176d66c30d36ac434c86d996363a1851450d2b5844b7e8470ea573d9a2" files: - path: ".gds/compiled-policy.json" - digest: "sha256:37ece9020fd9eeed4ee90582600c5e50cb3a7e32ee773719d1ccfad2d9cd1b6d" + digest: "sha256:53a401917322b46ed1c05ee977492fd27f8458af0ca2f6afd8cfe963953ed933" - path: ".github/workflows/gds-ci.yml" - digest: "sha256:6aac2541813495a8e06db7c5ba36ab666b1d4cf89c207abd9e7394e9031f3ec9" + digest: "sha256:5c14444b50680773115119241cedb1ac002a9c5bd41e74cfa0309d32d8d92677" diff --git a/.gds/compiled-policy.json b/.gds/compiled-policy.json index 7bcb40b..144dcdc 100644 --- a/.gds/compiled-policy.json +++ b/.gds/compiled-policy.json @@ -2,8 +2,8 @@ "schema_version": 1, "compiled_policy": { "repository_id": "repo_01M0EZ7TB3KNXNSP78Z8M64WXG", - "bundle_version": "0.9.4-dev", - "digest": "sha256:1b0f8c63bd653f2ff4f2478acd77ed18785a1591d801d51171df93aa7a280092" + "bundle_version": "0.9.5-dev", + "digest": "sha256:b2af473de6ff13bf6b0eb5339437d82f49f923bdbbb81b22f74cfdea6ab1ef37" }, "sources": [ { diff --git a/.github/workflows/gds-ci.yml b/.github/workflows/gds-ci.yml index cf0c78f..754ab44 100644 --- a/.github/workflows/gds-ci.yml +++ b/.github/workflows/gds-ci.yml @@ -1,8 +1,8 @@ # GENERATED FILE - DO NOT EDIT DIRECTLY # generator: gds -# bundle: 0.9.4-dev +# bundle: 0.9.5-dev # source-tree-digest: sha256:50743872ba177cd8a1b293d497e4c2f03a21a46b9b6040594e4fb8c3fff755d5 -# input-digest: sha256:dc9842379e787b40c7e71830122e78ef4181c00d5d8aea46a6e5f861be631cef +# input-digest: sha256:f5ec33d462ba78a56db5b042093b92c54cc1dd5ac98b689ae676a27de3a87165 # output-digest: sha256:b9bf3d0c64c0fb371596e7d090e82e62aebbfde91929115fc15fb28644e4fd38 # edit-source: # - .gds/repository.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 1289072..13e0349 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ Versioning. ## [Unreleased] +## [0.9.5] - 2026-09-15 + - Surface the registered device and its `class` (`profile`/`gui`/`docker_mode`/ `execution_policy`) on `gds context` from the device-local locator bound to exactly one `estate/devices/*.yaml`. `gds-orient` reads `context.device` @@ -22,6 +24,18 @@ Versioning. - Record extra-approval false on `main` and pin reusable workflows to current module mains. +## [0.9.4] - 2026-09-13 + +- Validate release evidence before the expensive build gates. +- Run the full race suite once per release gate. + +## [0.9.3] - 2026-09-13 + +- Make device onboarding consistent and refresh the release toolchain. +- Validate formatting with the selected Go toolchain. +- Cover Intel macOS and consume the reviewed workflow library. +- Refresh generated fixtures and portable Python dependency locks. + ## [0.9.2] - 2026-09-12 - Add a public, exact-attempt harness evidence producer that rejects private diff --git a/README.md b/README.md index 3257ee2..41b56bf 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,9 @@ seed Go toolchain + `gds` build, and the control-plane staged commands in order, with plan/apply gates at each boundary. See `docs/runbooks/bootstrap-device.md` for the seam. +`gds context --json` reports `context.device` when the device-local locator +binds a descriptor. + ## Verification ```bash diff --git a/core/cli/root.go b/core/cli/root.go index a3d43c9..2908d01 100644 --- a/core/cli/root.go +++ b/core/cli/root.go @@ -22,7 +22,7 @@ import ( // Version is the development default; a release build overrides it with the // exact tag via -X. It carries the -dev suffix so an unstamped binary can // never claim to be a released one. -var Version = "0.9.4-dev" +var Version = "0.9.5-dev" type options struct { json bool diff --git a/core/cmd/gds-controller/main.go b/core/cmd/gds-controller/main.go index 2add2b9..e196533 100644 --- a/core/cmd/gds-controller/main.go +++ b/core/cmd/gds-controller/main.go @@ -25,7 +25,7 @@ import ( // version is the development default; the release builder stamps the exact // tag via -X main.version. The -dev suffix keeps an unstamped binary honest. -var version = "0.9.4-dev" +var version = "0.9.5-dev" func main() { ctx, stop := signal.NotifyContext( diff --git a/core/compiler/types.go b/core/compiler/types.go index cd01759..5430dab 100644 --- a/core/compiler/types.go +++ b/core/compiler/types.go @@ -12,7 +12,7 @@ import ( // policy-owner checkout. It tracks the current release line with a -dev // suffix so a development bundle is dated honestly; the development channel // field, not this string, is what classifies the bundle. -const DevelopmentBundleVersion = "0.9.4-dev" +const DevelopmentBundleVersion = "0.9.5-dev" type PolicySource struct { SchemaVersion int `json:"schema_version"` diff --git a/docs/contracts/estate-v1.md b/docs/contracts/estate-v1.md index aaad437..bc2e638 100644 --- a/docs/contracts/estate-v1.md +++ b/docs/contracts/estate-v1.md @@ -187,6 +187,10 @@ the descriptor's intent and the OS installer it drives cannot disagree. The profile/OS consistency and never mutate configuration. The phased bootstrap seam that consumes this block is documented in `docs/runbooks/bootstrap-device.md`. +`gds context` binds the device-local locator `device_id` to exactly one +`estate/devices/*.yaml` as `context.device` (including `class`). A missing +locator omits the field; context never infers a device from hostname or cwd. + No validator fixes configuration automatically. Changing a device workspace-root mapping updates desired placement only. GDS diff --git a/docs/runbooks/bootstrap-device.md b/docs/runbooks/bootstrap-device.md index 4f3d670..68016a6 100644 --- a/docs/runbooks/bootstrap-device.md +++ b/docs/runbooks/bootstrap-device.md @@ -60,6 +60,10 @@ Cross-field rules are enforced by the schema validator `modules/macos-ubuntu-bootstrap/scripts/bootstrap.sh`. A descriptor that omits `class:` stays valid and defaults to desktop. +`gds context` binds the device-local locator `device_id` to exactly one +`estate/devices/*.yaml` as `context.device` (including `class`). A missing +locator omits the field; context never infers a device from hostname or cwd. + The bootstrap contract also defines the execution seam between classes. A `desktop` may run an explicit command on a separately provisioned `server` through `modules/macos-ubuntu-bootstrap/scripts/remote-exec.sh`; both diff --git a/tests/golden/projections/control-plane/.claude/CLAUDE.md b/tests/golden/projections/control-plane/.claude/CLAUDE.md index 8b54cb1..a0cee0d 100644 --- a/tests/golden/projections/control-plane/.claude/CLAUDE.md +++ b/tests/golden/projections/control-plane/.claude/CLAUDE.md @@ -1,9 +1,9 @@