Skip to content

AINRA v0.3.3 — the release that could actually be published

Choose a tag to compare

@JacobJandon JacobJandon released this 08 Aug 22:56
· 119 commits to main since this release

v0.3.2 is a real, signed, board-proven tag, and it cannot be published. Finding out why is this release.

With v0.3.2 tagged and publish-preflight printing READY locally, the publish workflow was dispatched — and its own preflight blocked:

[BLOCK] tag matches tree   packages differ from tag v0.3.2 — Drifted: packages/sdk-ts/package-lock.json

Nothing had drifted. The workflow provisions the SDK before running the release gate, and it did so with npm install, which writes package-lock.json. That lockfile had said 0.1.0 since v0.1.0 — through four version bumps that each touched package.json and never the lock. So the provisioning step synced it, and the gate three lines later diffed a tree that step had just dirtied.

The publish path had therefore never once got past its own preflight, on any version. It never failed visibly either, because it had never been run to completion. It never reproduced locally and never would have: the lockfile is only rewritten when npm install runs, and a developer machine already has node_modules.

Fixed

  • The lockfiles state their real version, and make lockfile-sync is a board row so they cannot drift again.
  • Provisioning can no longer dirty the tree it is about to gate — npm ci reads the lockfile and never writes it, and a new step asserts the tree is still pristine afterwards.
  • The npm publish job no longer self-upgrades npm. npm install -g npm@latest replaces npm's own install mid-run and can die with MODULE_NOT_FOUND; the dry-run job already refused to do this, while the job actually holding the credential still did it.
  • make declaration could not read what kits/soak/soak.mjs writes. The instrument emits {body:{wall_start,wall_end,slo:{measured_p95_sec}},sig_ed25519_b64}; the consumer read days, p95_seconds and signature — fields that have never existed in a report. Inside a try/catch, so real reports were silently skipped: three genuine fourteen-day soaks would have left the founding declaration still printing "0/3 regions passed", discoverable only on genesis day. make soak-ingest now connects the two, with controls for short, breached, unsigned and under-replicated runs.

Also in this release

The operations work from v0.3.2 — the staging network stands as a service that survives logout, reboot and a wedged daemon; the deployed site is walked daily as a stranger (SITE BROKEN / NETWORK DOWN / ALL UP, with the monitor's own negative control in the same job); and eleven things the public surface told visitors that were not true are fixed, each paired with a gate that would have caught it.

The published library source is byte-identical to v0.3.1.

Board: docs/releases/v0.3.3-board.md — ALL GREEN 24/24 from a fresh public clone.

Verify this release

ssh-keygen -Y verify -f allowed_signers -I release@ainra.org -n file -s SHA256SUMS.sig < SHA256SUMS
sha256sum -c SHA256SUMS

Then rebuild byte-for-byte from source per RELEASE-VERIFY.md.