Skip to content

Commit e99b74c

Browse files
committed
Release v0.3.0 with schema contract v1.1.0
1 parent b1e427e commit e99b74c

52 files changed

Lines changed: 4417 additions & 653 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/publish-schema.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ jobs:
7373
- name: Validate schema JSON and $id binding
7474
shell: bash
7575
env:
76+
MODEL_SCHEMA_VERSION: ${{ steps.contract.outputs.model_schema_version }}
7677
EXPECTED_MODEL_URI: ${{ steps.contract.outputs.model_schema_uri }}
7778
EXPECTED_MODEL_DIGEST: ${{ steps.contract.outputs.model_schema_digest }}
79+
SNAPSHOT_SCHEMA_VERSION: ${{ steps.contract.outputs.snapshot_schema_version }}
7880
EXPECTED_SNAPSHOT_URI: ${{ steps.contract.outputs.snapshot_schema_uri }}
7981
EXPECTED_SNAPSHOT_DIGEST: ${{ steps.contract.outputs.snapshot_schema_digest }}
8082
run: |
@@ -87,12 +89,12 @@ jobs:
8789
8890
checks = [
8991
(
90-
Path("api/schema/model.schema.json"),
92+
Path(f"api/schema/model/v{os.environ['MODEL_SCHEMA_VERSION']}/model.schema.json"),
9193
os.environ["EXPECTED_MODEL_URI"],
9294
os.environ["EXPECTED_MODEL_DIGEST"],
9395
),
9496
(
95-
Path("api/schema/snapshot.schema.json"),
97+
Path(f"api/schema/snapshot/v{os.environ['SNAPSHOT_SCHEMA_VERSION']}/snapshot.schema.json"),
9698
os.environ["EXPECTED_SNAPSHOT_URI"],
9799
os.environ["EXPECTED_SNAPSHOT_DIGEST"],
98100
),
@@ -127,17 +129,15 @@ jobs:
127129
set -euo pipefail
128130
129131
ROOT="out"
130-
MODEL_VERSION_DIR="${ROOT}/schema/model/v${MODEL_SCHEMA_VERSION}"
131132
MODEL_LATEST_DIR="${ROOT}/schema/model/latest"
132-
SNAPSHOT_VERSION_DIR="${ROOT}/schema/snapshot/v${SNAPSHOT_SCHEMA_VERSION}"
133133
SNAPSHOT_LATEST_DIR="${ROOT}/schema/snapshot/latest"
134134
135-
mkdir -p "${MODEL_VERSION_DIR}" "${MODEL_LATEST_DIR}" "${SNAPSHOT_VERSION_DIR}" "${SNAPSHOT_LATEST_DIR}" "${ROOT}/schema"
135+
mkdir -p "${ROOT}/schema" "${MODEL_LATEST_DIR}" "${SNAPSHOT_LATEST_DIR}"
136136
137-
cp api/schema/model.schema.json "${MODEL_VERSION_DIR}/model.schema.json"
138-
cp api/schema/model.schema.json "${MODEL_LATEST_DIR}/model.schema.json"
139-
cp api/schema/snapshot.schema.json "${SNAPSHOT_VERSION_DIR}/snapshot.schema.json"
140-
cp api/schema/snapshot.schema.json "${SNAPSHOT_LATEST_DIR}/snapshot.schema.json"
137+
cp -R api/schema/model "${ROOT}/schema/"
138+
cp -R api/schema/snapshot "${ROOT}/schema/"
139+
cp "api/schema/model/v${MODEL_SCHEMA_VERSION}/model.schema.json" "${MODEL_LATEST_DIR}/model.schema.json"
140+
cp "api/schema/snapshot/v${SNAPSHOT_SCHEMA_VERSION}/snapshot.schema.json" "${SNAPSHOT_LATEST_DIR}/snapshot.schema.json"
141141
142142
UPDATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
143143
cat > "${ROOT}/schema/index.json" <<EOF

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
## Unreleased
44

5+
## v0.3.0
6+
7+
### Added
8+
9+
- Versioned public schema contract evolution to `io.mb3r.bering.model@1.1.0` and `io.mb3r.bering.snapshot@1.1.0` without mutating the preserved `1.0.0` contracts.
10+
- Typed public topology metadata for stable edge identity, service placements, shared fate-domain references, edge resilience policy, observed latency/error summaries, policy scope, and richer endpoint fidelity.
11+
- Versioned contracts-pack and release-manifest plumbing aligned with the new schema tree and pinned `1.1.0` digests.
12+
- Documentation, migration guidance, examples, and schema publishing workflow updates aligned with the `1.1.0` contract line.
13+
514
## v0.2.0
615

716
### Added

README.md

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Bering
22

3-
`Bering v0.2.0` is the current product release of Bering: a discovery and publishing layer for service topology and endpoint contracts.
3+
`Bering v0.3.0` is the current product release of Bering: a discovery and publishing layer for service topology and endpoint contracts.
44

55
Bering turns trace input or explicit topology input into stable JSON artifacts, and it can also run as a long-lived runtime service that emits rolling discovery snapshots plus conservative reconciliation views for trace gaps.
66

@@ -14,20 +14,23 @@ Bering turns trace input or explicit topology input into stable JSON artifacts,
1414

1515
## Where Bering Stops
1616

17-
Bering owns discovery and discovery-side public contracts. It does not own simulation, policy evaluation, gating, chaos execution, or benchmark-specific rules.
17+
Bering owns discovery and discovery-side public contracts. It does not own simulation math, retry-amplification math, timeout-wave propagation, blast-radius scoring, policy evaluation, gating, or chaos execution.
1818

1919
## Product Version vs Schema Version
2020

2121
Do not treat the product release tag as the schema contract version.
2222

23-
- Current product release for this repository: `Bering v0.2.0`
24-
- Current product git tag / GitHub Release: `v0.2.0`
25-
- Public schema contracts emitted by this release remain:
23+
- Current product release for this repository: `Bering v0.3.0`
24+
- Current product git tag / GitHub Release: `v0.3.0`
25+
- Default emitted schema contracts now are:
26+
- `io.mb3r.bering.model@1.1.0`
27+
- `io.mb3r.bering.snapshot@1.1.0`
28+
- Previously published contracts remain valid and immutable:
2629
- `io.mb3r.bering.model@1.0.0`
2730
- `io.mb3r.bering.snapshot@1.0.0`
28-
- Schema publishing tag remains separate: `schema-v1.0.0`
31+
- Schema publishing tag remains separate: `schema-v1.1.0`
2932

30-
In other words: Bering `v0.2.0` advances the product release line while continuing to emit the already-stable schema contracts at `1.0.0`.
33+
`bering validate` accepts both the preserved `1.0.0` artifacts and the current `1.1.0` artifacts.
3134

3235
## Installation
3336

@@ -49,7 +52,7 @@ Also packaged today:
4952
Example:
5053

5154
```bash
52-
tar -xzf bering_0.2.0_linux_amd64.tar.gz
55+
tar -xzf bering_0.3.0_linux_amd64.tar.gz
5356
./bering help
5457
```
5558

@@ -74,7 +77,7 @@ go run ./cmd/bering discover \
7477
--discovered-at 2026-03-03T00:00:00Z
7578
```
7679

77-
Expected result: a deterministic `io.mb3r.bering.model@1.0.0` artifact.
80+
Expected result: a deterministic `io.mb3r.bering.model@1.1.0` artifact.
7881

7982
### 2) Validate an artifact
8083

@@ -96,7 +99,7 @@ go run ./cmd/bering discover \
9699
--discovered-at 2026-03-03T00:00:00Z
97100
```
98101

99-
Expected result: a model artifact plus an `io.mb3r.bering.snapshot@1.0.0` envelope.
102+
Expected result: a model artifact plus an `io.mb3r.bering.snapshot@1.1.0` envelope.
100103

101104
### 4) Run runtime mode
102105

@@ -134,20 +137,20 @@ go run ./cmd/sheaft run \
134137
### Core model
135138

136139
- `name`: `io.mb3r.bering.model`
137-
- `version`: `1.0.0`
138-
- `uri`: `https://mb3r-lab.github.io/Bering/schema/model/v1.0.0/model.schema.json`
139-
- `digest`: `sha256:272277c093f37580adcd2dded225bd37c86539d642d7910baad7e4228227d1a7`
140+
- `version`: `1.1.0`
141+
- `uri`: `https://mb3r-lab.github.io/Bering/schema/model/v1.1.0/model.schema.json`
142+
- `digest`: `sha256:bc9a60736c9e6bda9599243fd68f293b88f42ade65321d8267369a5c3214779a`
140143

141-
This is the stable topology artifact intended for file-based consumers and tools such as Sheaft.
144+
This is the stable topology artifact intended for file-based consumers and tools such as Sheaft. It now carries first-class edge ids, typed service placement and shared-fate metadata, typed edge resilience policy, optional observed edge timing summaries, policy scope metadata, and richer endpoint fidelity.
142145

143146
### Snapshot envelope
144147

145148
- `name`: `io.mb3r.bering.snapshot`
146-
- `version`: `1.0.0`
147-
- `uri`: `https://mb3r-lab.github.io/Bering/schema/snapshot/v1.0.0/snapshot.schema.json`
148-
- `digest`: `sha256:87e4e887ed4a37b72f6136e268b73552eccb92941c4de2c6f3a514dd066ea972`
149+
- `version`: `1.1.0`
150+
- `uri`: `https://mb3r-lab.github.io/Bering/schema/snapshot/v1.1.0/snapshot.schema.json`
151+
- `digest`: `sha256:53b127608b2aaa4fabb352b998cd6b2c5ed558764729a09abea56f4f9b40fa01`
149152

150-
This wraps the model with runtime window metadata, ingest counts, coverage, provenance, and topology diffs.
153+
This wraps the model with runtime window metadata, ingest counts, coverage, provenance, topology diffs, and discovery-side copies of the same typed placement, resilience, and observed edge metadata.
151154

152155
### Runtime reconciliation views
153156

@@ -158,7 +161,13 @@ Runtime mode also keeps a conservative reconciliation layer for sparse traffic a
158161
- `guardrail_union`: the conservative default downstream artifact
159162
- a machine-readable reconciliation report for operators
160163

161-
These runtime views do not change the public `io.mb3r.bering.model@1.0.0` or `io.mb3r.bering.snapshot@1.0.0` contracts.
164+
These runtime views do not change the public `io.mb3r.bering.model@1.1.0` or `io.mb3r.bering.snapshot@1.1.0` contracts.
165+
166+
### Population Today
167+
168+
- `topology_api` input and discovery overlays are the first-class write surfaces for typed `placements`, `shared_resource_refs`, `resilience`, `observed`, `policy_scope`, and richer endpoint metadata.
169+
- Trace discovery can derive stable edge ids, endpoint `method` and `path`, and `observed.latency_ms.*` summaries when span timing exists.
170+
- Generic trace ingestion does not currently infer timeout policies, retry policies, circuit-breaker settings, placement groups, or shared resource references. Those remain out of scope for Bering trace inference today.
162171

163172
## Release Packaging
164173

RELEASING.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Product releases and schema publishing are separate operations:
99
- product release tags: `vX.Y.Z`
1010
- schema publishing tags: `schema-vA.B.C`
1111

12-
Product releases advance independently from the public schema contracts. As of the current release line, use `v0.2.0` for the product release while the public schema contracts remain pinned at `1.0.0`.
12+
Product releases advance independently from the public schema contracts. As of the current release line, use `v0.3.0` for the product release while the default emitted public schema contracts are `1.1.0` and the preserved `1.0.0` contracts remain available for validation and pinned consumers.
1313

1414
## Prerequisites
1515

@@ -28,7 +28,7 @@ Dry-run without publishing:
2828

2929
```bash
3030
make release-dry-run \
31-
VERSION=0.2.0 \
31+
VERSION=0.3.0 \
3232
GIT_SHA="$(git rev-parse HEAD)" \
3333
BUILD_DATE="$(git show -s --format=%cI HEAD)"
3434
```
@@ -37,7 +37,7 @@ Full local release payload with OCI publish:
3737

3838
```bash
3939
make release-local \
40-
VERSION=0.2.0 \
40+
VERSION=0.3.0 \
4141
GIT_SHA="$(git rev-parse HEAD)" \
4242
BUILD_DATE="$(git show -s --format=%cI HEAD)" \
4343
IMAGE_REPOSITORY=ghcr.io/mb3r-lab/bering \
@@ -49,8 +49,8 @@ If the chart version must intentionally differ from the app version:
4949

5050
```bash
5151
make chart-package \
52-
VERSION=0.2.0 \
53-
CHART_VERSION=0.2.1 \
52+
VERSION=0.3.0 \
53+
CHART_VERSION=0.3.1 \
5454
ALLOW_CHART_VERSION_MISMATCH=1
5555
```
5656

@@ -80,7 +80,7 @@ These variables control the release payload:
8080
- `CHART_VERSION`: optional explicit chart version
8181
- `ALLOW_CHART_VERSION_MISMATCH=1`: required when `CHART_VERSION != VERSION`
8282

83-
For `v0.2.0`, `VERSION=0.2.0` while the emitted public schema contracts remain `1.0.0`.
83+
For `v0.3.0`, `VERSION=0.3.0` while the default emitted public schema contracts are `1.1.0`.
8484

8585
## Expected Output
8686

VERSIONING.md

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ Bering separates product release versioning from public schema contract versioni
44

55
For the current published product release:
66

7-
- product release tag: `v0.2.0`
8-
- product version in release automation: `0.2.0`
9-
- schema publishing tag: `schema-v1.0.0`
10-
- emitted schema contracts:
7+
- product release tag: `v0.3.0`
8+
- product version in release automation: `0.3.0`
9+
- schema publishing tag: `schema-v1.1.0`
10+
- default emitted schema contracts:
11+
- `io.mb3r.bering.model@1.1.0`
12+
- `io.mb3r.bering.snapshot@1.1.0`
13+
- previously published and still valid contracts:
1114
- `io.mb3r.bering.model@1.0.0`
1215
- `io.mb3r.bering.snapshot@1.0.0`
1316

@@ -23,8 +26,8 @@ App version changes govern the Bering CLI, the runtime service behavior, the ins
2326

2427
Examples:
2528

26-
- product release `v0.2.0` identifies the current Bering release line
27-
- `dist/release-manifest.json` records `"app_version": "0.2.0"`
29+
- product release `v0.3.0` identifies the current Bering release line
30+
- `dist/release-manifest.json` records `"app_version": "0.3.0"`
2831

2932
## Schema Contract Versions
3033

@@ -42,9 +45,10 @@ Each schema contract has its own version, URI, and digest. Those values are inde
4245

4346
Examples:
4447

45-
- Bering `v0.2.0` still emits `io.mb3r.bering.model@1.0.0`
46-
- Bering `v0.2.0` still emits `io.mb3r.bering.snapshot@1.0.0`
47-
- `schema-v1.0.0` publishes the schema files to GitHub Pages; it is not a product release tag
48+
- Bering `v0.3.0` now emits `io.mb3r.bering.model@1.1.0`
49+
- Bering `v0.3.0` now emits `io.mb3r.bering.snapshot@1.1.0`
50+
- `bering validate` still accepts `1.0.0` artifacts without mutation or migration
51+
- `schema-v1.1.0` publishes the schema files to GitHub Pages; it is not a product release tag
4852

4953
Rules:
5054

@@ -53,6 +57,7 @@ Rules:
5357
- Breaking schema changes require a new contract major version.
5458
- Non-breaking schema additions require a new contract minor version.
5559
- Pure fixes that do not change contract meaning require a new contract patch version.
60+
- This repository currently keeps the model and snapshot contracts on the same schema version line for publication and default emission.
5661

5762
## Image Tags
5863

@@ -98,4 +103,4 @@ Rules:
98103

99104
- A breaking schema change increments that contract's major version.
100105
- Existing published contract versions remain valid and immutable.
101-
- If Bering changes which schema version it emits by default in a way that breaks existing consumers, that is also an app-surface breaking change and should trigger a new app major version.
106+
- If Bering changes which schema version it emits by default, call that out explicitly in release notes and keep older published contract versions available to validators and pinned consumers.

0 commit comments

Comments
 (0)