From eb81422bbef3f6bd375897a5d85c46c89defe7b5 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Mon, 21 Sep 2026 10:27:33 +0700 Subject: [PATCH] chore(release): the published crate predates its sixth backend t27c on crates.io is 0.2.0. The compiler gained gen-js in #4472, so the version a user installs from the registry cannot emit JavaScript while the compiler on master can. Minor rather than patch: a new backend is added functionality, and additive -- the five existing targets are untouched. Both files the release pipeline's VERSION TRUTH gate reads for a t27c-v* tag are bumped together, because the gate refuses a tag whose manifests do not already say what the tag says, and a half-bumped pair fails the tag rather than the PR. ZENODO_DEPOSITION_T27C stays unset on purpose, so zenodo-publish.yml skips and mints no DOI. A DOI cannot be withdrawn; enabling it is its own decision, not a side effect of cutting a crate release. Closes #4490 Co-Authored-By: Claude Opus 5 --- .zenodo.json | 2 +- Cargo.lock | 2 +- bootstrap/Cargo.toml | 2 +- ...1-the-published-crate-predates-its-sixth-backend.md | 10 ++++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 docs/now/2026-09-21-the-published-crate-predates-its-sixth-backend.md diff --git a/.zenodo.json b/.zenodo.json index 0ea96882fa..4376c5d9fd 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -48,6 +48,6 @@ "title": "T27: TRI-27 — Spec-First Language for Ternary Computing" } ], - "version": "0.2.0", + "version": "0.3.0", "language": "eng" } diff --git a/Cargo.lock b/Cargo.lock index fe19b1b077..9d131a42d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3223,7 +3223,7 @@ dependencies = [ [[package]] name = "t27c" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "axum", diff --git a/bootstrap/Cargo.toml b/bootstrap/Cargo.toml index 438879c84c..587481dd8c 100644 --- a/bootstrap/Cargo.toml +++ b/bootstrap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "t27c" -version = "0.2.0" +version = "0.3.0" edition = "2021" description = "T27 Bootstrap Compiler for Trinity S³AI Framework" license = "MIT" diff --git a/docs/now/2026-09-21-the-published-crate-predates-its-sixth-backend.md b/docs/now/2026-09-21-the-published-crate-predates-its-sixth-backend.md new file mode 100644 index 0000000000..fde686de0e --- /dev/null +++ b/docs/now/2026-09-21-the-published-crate-predates-its-sixth-backend.md @@ -0,0 +1,10 @@ +# NOW -- the published crate predates its sixth backend (2026-09-21) + +## the published crate predates its sixth backend (Closes #4490) + +- **What a reader actually gets today.** crates.io serves `t27c 0.2.0` -- one version, 13 downloads, nothing yanked. `gen-js` landed on master in #4472, so the compiler installed by `cargo install t27c` cannot emit JavaScript while the compiler in this tree can. For anyone who has not cloned the repository, the registry copy is the only t27c that exists. +- **Minor rather than patch, and the reason is that it is additive.** A sixth backend is added functionality; the five existing targets -- Zig, Verilog, Verilog (HIR), C, Rust -- are untouched by it. +- **Two manifests move together because the gate reads exactly two.** The VERSION TRUTH step in `release.yml` checks `bootstrap/Cargo.toml` and `.zenodo.json` against the tag whenever the prefix is `t27c-v*`. A half-bumped pair fails the TAG rather than the pull request, which is the expensive place to discover it. `Cargo.lock` follows as the third line of the same change. +- **The rehearsal was run here rather than left to CI.** `cargo publish --dry-run --manifest-path bootstrap/Cargo.toml` reaches `Uploading t27c v0.3.0` and stops itself, exit 0. An earlier attempt refused outright over a single uncommitted manifest -- that is the gate working, not failing. +- **No DOI is minted, and that is deliberate.** `zenodo-publish.yml` looks up `ZENODO_DEPOSITION_T27C`; `gh variable list --repo gHashTag/t27` returns nothing, so the job skips. A DOI cannot be withdrawn once minted, so enabling it is its own decision and not a side effect of cutting a crate. +- **What this does NOT establish.** The dry run proves the crate packages and that the manifests agree with the tag. It runs no generated JavaScript and compiles none -- that `t27c gen-js` is correct is what #4471 and #4472 argued, and nothing here re-argues it. Note also that unlike a branch, a published version is permanent: 0.3.0 can be yanked, never replaced and never reused.