Skip to content

crucible 0.0.2

Choose a tag to compare

@github-actions github-actions released this 08 Aug 22:22
· 12 commits to main since this release

The gate that runs against a published artifact rather than a build of this
tree, and the defect it found the first time it ran.

Added

  • scripts/smoke.sh — the release gate that could not run before there was a
    release. It takes the published tarball, checks it against the published
    checksum, and runs it in a sandbox holding the binary, the dynamic loader and
    the libraries the binary itself names: no shell, no toolchain, no certificate
    bundle, no source tree, and a home directory a moment old. What that proves is
    not that the libraries it needs are there, which binding them guarantees, but
    the half no other gate can see — that nothing else on the build machine was
    holding it up. It reports the glibc floor, refuses a run whose --version
    disagrees with Cargo.toml, and requires that a machine with no key be told
    which variable it wants rather than left with a blank screen. Wired into
    RELEASING.md on both sides of the tag.

Fixed

  • A run whose output is redirected no longer writes the terminal title.
    crucible > log and crucible | tee were both getting the OSC sequence that
    names a tab — once on the way in and once when the guard handed the title
    back — and neither is a title once something other than a terminal has read
    it; they are twenty-two bytes in the middle of somebody's file. Setting one
    now goes through the only constructor there is, and it asks standard output
    whether it is a terminal before writing anything, so a caller cannot aim a
    title at a pipe. scripts/smoke.sh fails a release whose redirected run
    writes any escape sequence at all, which is how this was found: in the
    published 0.0.1 artifact rather than in the source.

Documented

  • The released binary needs glibc 2.34 or newer and nothing else from the
    system — no certificate store, no runtime. Measured from the binary rather
    than assumed, ignoring weak symbols, which is the difference between a floor
    and a version number that retires distributions this runs on perfectly well.

Internal

  • The report that a session has stopped being recorded is now gated from the
    binary's own tests. A log that fails every write cannot be built from outside
    the runner — every public way in ends at a real file — so the case where the
    last turn is still queued when input ends had no test, and deleting the code
    that reports it would have gone unnoticed. crucible-runner gains a proof
    feature that only the binary's [dev-dependencies] turns on, so the seam is
    absent from a release build; a compile_error! behind the feature is what
    proved that rather than cargo's documented behaviour being taken on trust.