Skip to content

v1.9.0 — trailer stage ceiling

Choose a tag to compare

@markabrahams markabrahams released this 18 Aug 21:27
· 9 commits to main since this release

A commit's Change: trailer claimed the whole change, which is right when the commit is the landing — and wrong for a commit that lands an interim artefact. That commit is permanent, a deploy range can legitimately re-include it, and it could therefore carry the change all the way to ship having delivered none of it.

Added

  • Optional stage ceiling on the correlation trailer: Change: <slug>/CHG-NN:<stage> declares the furthest stage that commit may advance its change to. A stamp beyond every ceiling declared for a change is sent as a no-op — the change is neither advanced nor moved back to the ceiling.
  • Ceilings are aggregated across a range. If any commit for a change carries no suffix the change is unbounded, so a design commit riding alongside the real landing never blocks a ship.
  • The reported commit is sent with the stamp, so the same commit never advances the same stage twice however often a range re-includes it.
  • A supports-trailer-stage-ceiling marker in --help, so tooling can probe for support before writing a suffix.

Changed

  • Ranges are walked per commit, so each trailer keeps its own sha.

Compatibility

Backward compatible. Omitting the suffix keeps the previous meaning — the commit delivers the change in full — so existing history, branches and pipelines are unaffected. Stage ordering deliberately stays server-side; this script passes declared ceilings through rather than comparing them.

Before writing a suffix, check for support. An older copy of this script matches only the trailer prefix, so it silently truncates a suffix and treats the commit as delivering the change in full — the dangerous direction of version skew:

npx @defprod/scripts defprod-stamp --help 2>&1 \
    | grep -q 'supports-trailer-stage-ceiling' \
    && echo "suffix supported" || echo "omit the suffix"

Upgrade

npm install -g @defprod/scripts
# or
npx @defprod/scripts defprod-stamp --help