Skip to content

Commit 84887b7

Browse files
authored
Merge pull request #33 from NDDev-OpenNetwork/fix/release-use-pinned-engine-root
fix(release): use the pinned public engine root
2 parents d96ad1e + 180be78 commit 84887b7

5 files changed

Lines changed: 30 additions & 8 deletions

File tree

‎.gds/bundle.lock.yaml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ bundle:
55
version: "0.4.0-dev"
66
release_sequence: 0
77
channel: "development"
8-
source_tree_digest: "sha256:19faa612aeb7afbcd594c3b3e8ef1bec59f5639e73f1ecb8e63c7756d126144c"
9-
digest: "sha256:6e9dccd59cc1fd5e89d0c7dfab833780599b6c66adf8baf112f3ceb5c3178258"
8+
source_tree_digest: "sha256:989914f430e3575d2db2fd71fc8cdcf2313d08889fa2db32622d2d7966cbee60"
9+
digest: "sha256:7308f18dfc57067fb30eab89058ddee635e554b149fbe2aa2eecf276eb4007b7"
1010

1111
projection:
12-
input_digest: "sha256:6c591644a111349d49e3b5d25e1418a14a74b0ca98891c75a8b39b9408f0d441"
13-
output_digest: "sha256:7f3bb302ff5b46d9ddcf68765e3e05e12938ecdafe75a82b37313b75fdb87033"
12+
input_digest: "sha256:43c3fa27e63fb7c3a2fde443d397f042d937a21aa868adab169a4cefdb088eed"
13+
output_digest: "sha256:d9acac2455048c23dc2a1812b1eaa775b0e4862ef3ea9aa3998d11797786f297"
1414
files:
1515
- path: ".gds/compiled-policy.json"
1616
digest: "sha256:78d09606bb4168d74bce1f50ab62b46a7ded34652c6b23af1badfd26dd060e94"
1717
- path: ".github/workflows/gds-ci.yml"
18-
digest: "sha256:165855583077fe66dfa6828017c7292c8dbd3fba173d259dffe1ffd59e6f6417"
18+
digest: "sha256:4718a7cf5248d79660a3bbe952a158a4fe25672ec52948c5f2425fdb4cfbf3ec"

‎.github/workflows/gds-ci.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# GENERATED FILE - DO NOT EDIT DIRECTLY
22
# generator: gds
33
# bundle: 0.4.0-dev
4-
# source-tree-digest: sha256:19faa612aeb7afbcd594c3b3e8ef1bec59f5639e73f1ecb8e63c7756d126144c
5-
# input-digest: sha256:6c591644a111349d49e3b5d25e1418a14a74b0ca98891c75a8b39b9408f0d441
4+
# source-tree-digest: sha256:989914f430e3575d2db2fd71fc8cdcf2313d08889fa2db32622d2d7966cbee60
5+
# input-digest: sha256:43c3fa27e63fb7c3a2fde443d397f042d937a21aa868adab169a4cefdb088eed
66
# output-digest: sha256:8f61a9ffd6949238099d4523a037d57199eb575f187cc8ac52baa4b5b832e79f
77
# edit-source:
88
# - .gds/repository.yaml

‎CHANGELOG.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ Versioning.
4040
- Release sequence is an explicit monotonic dispatch input rather than the
4141
repository-local workflow run number, preserving the accepted sequence ledger
4242
across the public-authority migration.
43+
- Release lifecycle operations invoked from a private control plane now bind
44+
their committed implementation proof to its pinned public GDS engine root.
4345

4446
## [0.1.1] - 2026-08-16
4547

‎core/app/release_operations.go‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/NDDev-OpenNetwork/github-device-sync/core/domain"
1616
"github.com/NDDev-OpenNetwork/github-device-sync/core/identity"
1717
"github.com/NDDev-OpenNetwork/github-device-sync/core/operations"
18+
"github.com/NDDev-OpenNetwork/github-device-sync/core/projections"
1819
"github.com/NDDev-OpenNetwork/github-device-sync/core/releaseconsumer"
1920
"github.com/NDDev-OpenNetwork/github-device-sync/core/serialization"
2021
"github.com/NDDev-OpenNetwork/github-device-sync/core/state"
@@ -543,7 +544,7 @@ func (services *Services) releaseOperationContext(
543544
if err != nil {
544545
return releaseOperationContext{}, []domain.Finding{dependencyFinding(path, err)}
545546
}
546-
if _, err := services.Git.CommittedSourceOID(ctx, root, []string{
547+
if _, err := services.Git.CommittedSourceOID(ctx, releaseImplementationRoot(root), []string{
547548
"requirements/bundle-trust.yaml", ".github/workflows/release-bundle.yml",
548549
"scripts/validate_release.sh", "core/app/release_operations.go", "core/app/release_scope.go", "core/bundle",
549550
"core/cli", "core/cmd/gds", "core/operations", "core/providers/git/source.go",
@@ -582,6 +583,10 @@ func (services *Services) releaseOperationContext(
582583
}, nil
583584
}
584585

586+
func releaseImplementationRoot(controlPlaneRoot string) string {
587+
return projections.ResolveDevelopmentSourceLayout(controlPlaneRoot).EngineRoot
588+
}
589+
585590
func (services *Services) releaseVerifier(identity bundle.TrustVerifier) (releaseconsumer.Verifier, error) {
586591
if services.ReleaseAttestations != nil {
587592
return releaseconsumer.Verifier{Schemas: services.Schemas, Attestations: services.ReleaseAttestations}, nil

‎core/app/release_operations_test.go‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package app
22

33
import (
4+
"os"
45
"path/filepath"
56
"testing"
67
)
@@ -28,3 +29,17 @@ func TestNormalizeReleaseOperationPathsProducesStableAbsoluteInputs(t *testing.T
2829
}
2930
}
3031
}
32+
33+
func TestReleaseImplementationRootFollowsThePinnedPublicEngine(t *testing.T) {
34+
root := t.TempDir()
35+
if observed := releaseImplementationRoot(root); observed != root {
36+
t.Fatalf("monolithic release root = %q, want %q", observed, root)
37+
}
38+
engine := filepath.Join(root, "modules", "github-device-sync")
39+
if err := os.MkdirAll(engine, 0o755); err != nil {
40+
t.Fatal(err)
41+
}
42+
if observed := releaseImplementationRoot(root); observed != engine {
43+
t.Fatalf("split release root = %q, want pinned engine %q", observed, engine)
44+
}
45+
}

0 commit comments

Comments
 (0)