Skip to content

release: v1.0.0#4

Merged
takeokunn merged 1 commit into
mainfrom
release/v1.0.0
Jul 25, 2026
Merged

release: v1.0.0#4
takeokunn merged 1 commit into
mainfrom
release/v1.0.0

Conversation

@takeokunn

Copy link
Copy Markdown
Collaborator

First stable release.

The public API — the symbols exported from the cl-tty-kit package, enumerated in README.md's "API Overview" and asserted against the live package by t/package-introspection.lisp — is now covered by semantic versioning.

Release-gate fixes found while preparing the tag

flake.nix advertised x86_64-darwin nixpkgs 26.11 (which the nixos-unstable input now tracks) dropped that platform outright, so every output for it failed to evaluate, not merely to build. CI never saw this: plain nix flake check only evaluates outputs for the runner's own system, and neither matrix runner is x86_64-darwin. Dropped the platform from systems, and switched ci.yml to nix flake check --all-systems so the gate covers every platform the flake claims. Foreign systems are evaluated, not built, so the check stays cheap.
t/screen.lisp trailing blank line git diff --check — step 3 of RELEASING.md's own checklist, and a CI step — reports this as a defect. Introduced by this cycle's t/screen.lisp split; it would have failed the release gate.
Flake apps had no meta.description nix flake check warned about all four on every system, and nix flake show renders them. These are the entry points the README, installation docs, and RELEASING.md all point users at.
Duplicated CHANGELOG.md entry The nerima-lisp org adoption survey entry appeared twice, verbatim.

Stability contract

Newly written down in README.md, the docs site landing page, RELEASING.md, and docs/src/release-process.md — all four naming the same surface:

  • Covered: exported symbols, decoded input-event shape (key-event type/code/modifiers), the tty-kit-error condition hierarchy
  • Not covered: %-prefixed internals, contrib/, build/CI plumbing, and render-diff's exact byte sequence (bounded by t/properties.lisp's visible-result property, not a fixed transcript)

Also carries this cycle's accumulated work

vendor/ submodule removal in favor of flake inputs · the cl-parser-kit contrib grammar · the :normalize-paste-line-endings decoder option · the four C0 control keys · the t/screen-mutation.lisp split · coverage work bringing src/ to 95.36% expression / 96.00% branch

Verification

All green on aarch64-darwin:

  • nix run .#verify — suite + 21 examples + source-registry smoke
  • nix flake check --all-systems — 0 errors, 0 warnings
  • nix build .#docs--strict
  • nix run .#coverage
  • git diff --check

The two contrib CSI grammars (cl-prolog DCG and cl-parser-kit combinators) were additionally differential-tested against each other over 13 cases including edge cases; they agree on all of them.

First stable release. The public API -- the symbols exported from the
cl-tty-kit package, enumerated in README.md's "API Overview" and asserted
against the live package by t/package-introspection.lisp -- is now covered
by semantic versioning.

Release-gate fixes found while preparing the tag:

- t/pty.lisp's SIGTERM case spawned /bin/sleep, which does not exist inside
  the Nix build sandbox -- only /bin/sh and the Nix store do -- so both
  checks.x86_64-linux.test and the coverage-report build failed with a
  :SPAWN pty-operation-failed. It passed locally because Nix ships with
  `sandbox = false` on macOS, which makes a local `nix flake check` on a Mac
  strictly weaker than the same check in CI. Now spawns
  `/bin/sh -c 'exec sleep 5'` and lets PATH resolve coreutils' sleep; `exec`
  matters, since it replaces the shell so nothing is left reading stdin,
  which is the whole point of the case. Both copies of the quality-gate doc
  gain a section on the macOS sandbox gap and the reproduction command.
- flake.nix advertised x86_64-darwin, but nixpkgs 26.11 (which the
  nixos-unstable input now tracks) dropped that platform outright, so every
  output for it failed to *evaluate*. CI never saw this: plain `nix flake
  check` only evaluates outputs for the runner's own system, and neither
  matrix runner is x86_64-darwin. Dropped the platform and switched
  ci.yml to `nix flake check --all-systems` so the gate covers every
  platform the flake claims. Foreign systems are evaluated, not built.
- t/screen.lisp ended with a trailing blank line, which `git diff --check`
  -- step 3 of RELEASING.md's own checklist, and a CI step -- reports as a
  defect. Introduced by this cycle's t/screen.lisp split.
- flake.nix's four apps had no meta.description, which `nix flake check`
  warned about on every system and `nix flake show` renders.
- CHANGELOG.md carried the nerima-lisp org adoption survey entry twice.

Stability contract, newly written down in README.md, the docs site landing
page, RELEASING.md, and docs/src/release-process.md: exported symbols,
decoded-event shape, and the tty-kit-error hierarchy are covered; %-prefixed
internals, contrib/, build/CI plumbing, and render-diff's exact byte
sequence are not.

Also carries this cycle's accumulated work: the vendor/ submodule removal in
favor of flake inputs, the cl-parser-kit contrib grammar, the
:normalize-paste-line-endings decoder option, the four C0 control keys, the
t/screen-mutation.lisp split, and the coverage work that brought src/ to
95.36% expression / 96.00% branch.

Gates run green on aarch64-darwin, with the sandbox forced on so they match
CI: nix flake check --all-systems --option sandbox true, nix build --option
sandbox true .#coverage-report, nix run .#verify (suite + 21 examples +
source-registry smoke), nix build .#docs (--strict), git diff --check.
@takeokunn
takeokunn merged commit 0dfde1c into main Jul 25, 2026
4 checks passed
@takeokunn
takeokunn deleted the release/v1.0.0 branch July 25, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant