-
Notifications
You must be signed in to change notification settings - Fork 0
INTB-279: identify Tabellio v0.6.0 runners #44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
28fec97
27e8475
394d836
c20ba54
d46f476
123d87a
620e49f
8f57e19
c5a3b96
e3b70ab
684f903
2b64cb9
862a4b6
4b87fe5
9359184
3263d04
615733b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,17 +1,28 @@ | ||
| #!/usr/bin/env bash | ||
| set -euo pipefail | ||
|
|
||
| version="2.50.1" | ||
| artifact=".artifacts/toolchain/git-${version}-linux-amd64.tar.gz" | ||
| install_root="/tmp/intelip-tabellio-git-${version}" | ||
| required_version="2.50.1" | ||
| actual_version="$(git version | awk '{print $3}')" | ||
|
|
||
| buildkite-agent artifact download "$artifact" . | ||
| rm -rf "$install_root" | ||
| mkdir -p "$install_root" | ||
| tar -C "$install_root" -xzf "$artifact" | ||
| if ! awk -v actual="$actual_version" -v required="$required_version" ' | ||
| BEGIN { | ||
| split(actual, actual_parts, ".") | ||
| split(required, required_parts, ".") | ||
| for (part_index = 1; part_index <= 3; part_index++) { | ||
| actual_part = actual_parts[part_index] + 0 | ||
| required_part = required_parts[part_index] + 0 | ||
| if (actual_part > required_part) { | ||
| exit 0 | ||
| } | ||
| if (actual_part < required_part) { | ||
| exit 1 | ||
| } | ||
| } | ||
| exit 0 | ||
| } | ||
| '; then | ||
| printf 'Git %s or newer is required; found %s.\n' "$required_version" "$actual_version" >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| export PATH="${install_root}/bin:${PATH}" | ||
| export GIT_EXEC_PATH="${install_root}/libexec/git-core" | ||
| export GIT_TEMPLATE_DIR="${install_root}/share/git-core/templates" | ||
| export GITPERLLIB="${install_root}/share/perl5" | ||
| git --version |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,6 +4,25 @@ All notable changes to Tabellio are recorded here. | |
|
|
||
| ## Unreleased | ||
|
|
||
| ## 0.6.0 - release candidate | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When Useful? React with 👍 / 👎. |
||
|
|
||
| ### Added | ||
|
|
||
| - Machine-readable `tabellio-version` identity reporting for package version, exact source commit, source cleanliness, and matching release tag. | ||
| - Validation-result v0.4 runner provenance and focused INTB-279 product-validation evidence. | ||
|
|
||
| ### Changed | ||
|
|
||
| - Typed validation evidence now binds the Tabellio package and exact runner source while retaining v0.1 through v0.3 reader compatibility. | ||
|
|
||
| ### Release Gates | ||
|
|
||
| - `tabellio-preflight --profile release` | ||
| - `npm run check` | ||
| - Fallow whole-repository and changed-code scans | ||
| - `npm pack --dry-run --json` | ||
| - Exact candidate and merged-head Tabellio validation | ||
|
|
||
| ## 0.5.0 - 2026-07-20 | ||
|
|
||
| This is the first publication candidate after v0.2.0. Versions 0.3.0 and 0.4.0 were development milestones and were not tagged, released on GitHub, or published to npm. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| # INTB-279: Tabellio v0.6.0 Identity Contract | ||
|
|
||
| ## Required outcomes | ||
|
|
||
| - `package.json`, the changelog, and release notes identify version `0.6.0`. | ||
| - `tabellio-version` emits JSON containing the package name and version, exact Git commit, source cleanliness, and matching release tag when one exists. | ||
| - New validation results use `tabellio-validation-result/v0.4` and bind the same runner identity. | ||
| - Readers continue to accept validation-result versions v0.1 through v0.3. | ||
|
|
||
| ## Invariants | ||
|
|
||
| - Inspection is local and read-only. | ||
| - Unavailable Git identity remains `null`; it is never inferred. | ||
| - Dirty source remains visible as `sourceDirty: true`. | ||
| - No filesystem path or source content is included in runner identity. | ||
| - Every required validator has available zero-cost telemetry. | ||
|
|
||
| ## Forbidden outcomes | ||
|
|
||
| - Package, evidence, and release-note versions diverge. | ||
| - A missing or mismatched tag is represented as released. | ||
| - A moved commit reuses earlier validation evidence. | ||
| - Release publication, merge, deployment, billing, DNS, or consumer-repository mutation occurs without its separate approval. | ||
|
|
||
| ## Validation | ||
|
|
||
| The exact candidate commit must pass: | ||
|
|
||
| - `tabellio.v060-identity.validation.json` | ||
| - `tabellio.validation.json` | ||
| - repository checks and tests | ||
| - package dry-run inspection | ||
| - hosted CI and terminal review sync after push | ||
|
|
||
| The release is not shipped until a GitHub Release for tag `v0.6.0` exists. It is not deployed without an exact runtime receipt. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # Tabellio v0.6.0 | ||
|
|
||
| Tabellio v0.6.0 makes the running control-plane version independently identifiable. | ||
|
|
||
| ## Added | ||
|
|
||
| - `tabellio-version`, a machine-readable local identity command. | ||
| - Runner identity in validation-result v0.4: package name, package version, exact source commit, source cleanliness, and matching release tag. | ||
| - A focused product-validation manifest for the v0.6.0 identity contract. | ||
|
|
||
| ## Compatibility | ||
|
|
||
| - Existing validation-result v0.1, v0.2, and v0.3 documents remain supported. | ||
| - Git commit pins remain the distribution mechanism for consumer repositories. | ||
|
|
||
| ## Verification | ||
|
|
||
| ```sh | ||
| tabellio-version \ | ||
| --expect-version 0.6.0 \ | ||
| --expect-ref HEAD \ | ||
| --require-clean \ | ||
| --require-release-tag | ||
| ``` | ||
|
|
||
| The release-tag requirement passes only when `v0.6.0` is an annotated tag on the | ||
| exact commit in the GitHub `origin` remote and a published, non-draft GitHub | ||
| Release exists for that tag. A local-only tag reports `tagged`, never `released`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fresh evidence after the registry was added:
npm pack --dry-run --jsonnow includes.tabellio/validators.json, but it still includes notests/**files, while this packaged profile invokestests/runner-identity.test.mjsandtests/validation-runner.test.mjs. Extracting the package and running this profile produces failed evidence (Could not find 'tests/runner-identity.test.mjs, tests/validation-runner.test.mjs'), so the focused v0.6 identity validation shipped in the npm package cannot pass from a packaged install unless the tests are shipped or these profiles are changed to use packaged checks.Useful? React with 👍 / 👎.