Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .gds/bundle.lock.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
schema_version: 1

bundle:
version: "0.9.1-dev"
version: "0.9.2-dev"
release_sequence: 0
channel: "development"
source_tree_digest: "sha256:3cacaa23205120c46abf2b2e8c71c7063f95124688f2c2284af2b601545b7751"
digest: "sha256:d7150724f79195ecffdc35a8c722d72f003632e7fdd1c826144d8a3cf11d7a8b"
source_tree_digest: "sha256:0c885d2d0f12f74a4ea83a0cfcdab9d7458c815a89bb555f8dfe8aa8030b5366"
digest: "sha256:0442b90d82ad533ad4cc3e8647f3948dc00feddd2dd529f6665ee4baa59f4419"

projection:
input_digest: "sha256:a69fc0431080b0849b303ab1fec4313cb556449aa3946dddbbf9d2b18de645b2"
output_digest: "sha256:19302391ff426b6c2317bb281be0554045803580a83b868ded9340cc3d33a808"
input_digest: "sha256:6990797ab8ff381018560945ee46b08f218e45c29d9330611e4aedc72269ea81"
output_digest: "sha256:6e34a0f22dbff41e27b75cee5aee8166b00acea9573fed77ca622e9e4209e6cc"
files:
- path: ".gds/compiled-policy.json"
digest: "sha256:f8b613f78ef25fb46e44ea482044932c1b7bd1780f189a72bed172a242bbec52"
digest: "sha256:f22de75f2bb598a052f336948b85dbcf10c368d83dca323b518eee96ff6f8d42"
- path: ".github/workflows/gds-ci.yml"
digest: "sha256:64ca46a0a1d295b2e6fb5eeaac4818d02cc6ee4867d7822eb45f0dec26f4d90f"
digest: "sha256:e2c0d4349fe9b3cfba25794893c7aeda31e92347cb367484d83aaf2aea50828d"
4 changes: 2 additions & 2 deletions .gds/compiled-policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"schema_version": 1,
"compiled_policy": {
"repository_id": "repo_01M0EZ7TB3KNXNSP78Z8M64WXG",
"bundle_version": "0.9.1-dev",
"digest": "sha256:00a6630fc90cc2f4cefb0a002e8d00140750695d825937a94c0ca99be5ff708f"
"bundle_version": "0.9.2-dev",
"digest": "sha256:dafc90cc077d4cf850bdf756eb99a6bfb7c532832c0fc43fb4fa8d60ded37d69"
},
"sources": [
{
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/gds-ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# GENERATED FILE - DO NOT EDIT DIRECTLY
# generator: gds
# bundle: 0.9.1-dev
# source-tree-digest: sha256:3cacaa23205120c46abf2b2e8c71c7063f95124688f2c2284af2b601545b7751
# input-digest: sha256:a69fc0431080b0849b303ab1fec4313cb556449aa3946dddbbf9d2b18de645b2
# bundle: 0.9.2-dev
# source-tree-digest: sha256:0c885d2d0f12f74a4ea83a0cfcdab9d7458c815a89bb555f8dfe8aa8030b5366
# input-digest: sha256:6990797ab8ff381018560945ee46b08f218e45c29d9330611e4aedc72269ea81
# output-digest: sha256:8c045e745cc69b731bc695a4a9d58a48c10f1ab7dd85b7354db7bfd0e072711c
# edit-source:
# - .gds/repository.yaml
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ Versioning.

## [Unreleased]

## [0.9.2] - 2026-09-12

- Add a public, exact-attempt harness evidence producer that rejects private
source identities, stale/foreign/duplicate jobs and unsupported signer
authority. Preserve independent key validity and bind expiry to real runtime
age instead of renewing old CI evidence at packaging time.
- Repair capability-aware governance, managed-to-observed policy overrides,
public source-register ownership and consuming-estate bootstrap boundaries.
Provider-only discovery no longer invents missing-anchor findings.

- Honor explicit estate selection for governance policy compilation and local
comparison, retaining authority checks and the same root during apply.

Expand Down
2 changes: 1 addition & 1 deletion core/cli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.1-dev"
var Version = "0.9.2-dev"

type options struct {
json bool
Expand Down
2 changes: 1 addition & 1 deletion core/cmd/gds-controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.1-dev"
var version = "0.9.2-dev"

func main() {
ctx, stop := signal.NotifyContext(
Expand Down
2 changes: 1 addition & 1 deletion core/compiler/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.1-dev"
const DevelopmentBundleVersion = "0.9.2-dev"

type PolicySource struct {
SchemaVersion int `json:"schema_version"`
Expand Down
34 changes: 34 additions & 0 deletions docs/runbooks/release-promotion-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,37 @@ checks, nonreproducible artifacts, missing/mismatched attestations or SBOM,
stale/incomplete required harness evidence, conflicting sequence/tag identity,
unapproved provider writes, or a consumer target lacking its required trust and
acceptance evidence. Keep failures and missing evidence explicit.

## Public harness-evidence producer

`scripts/produce-harness-evidence.py` turns fresh, exact public setup-system
runs into signed active-seven records. The caller provides configuration,
GDS profile root, a private signing key and an independently maintained public
signer policy:

```bash
scripts/produce-harness-evidence.py --config "$PRODUCER_CONFIG" \
--gds-root "$GDS_SOURCE_ROOT" --private-key "$SIGNING_KEY" \
--signer-policy "$SIGNER_POLICY" --output "$NEW_EVIDENCE_DIRECTORY"
```

The producer's identity is the clean, published public repository containing
that script, at the configured ref. It never uses a private caller's current
working directory as producer authority. Every observed harness repository
must also be public. Private estate identity, topology and credentials do not
enter public release verification inputs.

A successful run is bound to its exact attempt and all six unique native jobs;
each job must name that run and source commit and have completed within 72
hours. Packaging cannot renew the runtime proof: expiry is bounded by the
oldest real job completion plus 72 hours, the packaging window and the existing
signer's key validity. `generated_at` records packaging time; the signed suite
digest includes the execution timestamps. The observation report retains those
timestamps for diagnosis.

The producer selects an existing active signer with both evidence roles and
checks the private key against its public key. It does not invent roles, issue
a new key or extend key validity. Its output trust policy preserves that
independent policy and adds only exact public producer/module anchors. Review
and pin this exact output policy before dispatch; do not treat a producer's
self-consistency as independent verification by the GDS release builder.
Loading
Loading