Skip to content

Document the current behavior and add a changelog - #25

Merged
ESultanik merged 2 commits into
typing-completefrom
docs
Aug 7, 2026
Merged

Document the current behavior and add a changelog#25
ESultanik merged 2 commits into
typing-completefrom
docs

Conversation

@ESultanik

@ESultanik ESultanik commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Stacked on #24. Last one in the series.

The README still told people to pip3 install, said nothing about which Pythons are supported, and gave no guidance on the one thing that decides whether the tool works at all: whether your keys have enough entropy for your plaintexts.

README

New sections on choosing and testing keys with -t, on --seed being for testing rather than secrecy, on performance and where the time actually goes, on running the tests, and a table of the three ciphertext format versions. Notes that decryption now accepts plain as well as gzipped input, and - for stdin.

Every command in the README was run verbatim against this build, and every number measured on this machine rather than estimated. The ciphertext expansion figure is stated as a range across sizes — 5.5× at 512 B down to 2.7× at 512 KiB — because a single number would have been wrong at both ends: the dictionary header is a fixed cost that only amortizes with size. (My first draft said "around 2.7×", which measurement showed was only true for large inputs.)

CHANGELOG

Leads with the two defects that could lose or expose data, because those are the reason to care about this release rather than the interesting ones:

  • --length-checksum corrupted plaintexts in 34 of 120 randomized round-trips, invisibly, because the length header truncated the damage away. Anyone holding ciphertexts from that mode should check them.
  • Ciphertexts recorded the output filename in cleartext in the gzip header — for a deniability tool, recoverable metadata in the first 30 bytes.

It also documents the removed and renamed API. Encrypter's hooks changed shape rather than changing meaning under the same names, so an out-of-tree subclass fails loudly instead of silently doing something else.

American English

A second commit converts British spellings (behaviour, colour, labelled, amortised, summarise, honouring, desynchronisation, relabelled) to American across the README, changelog, source comments, docstrings, and affected test names. LICENSE is untouched — it is verbatim GPL text.

Note that commit messages and PR descriptions already merged still contain British spellings; those are in history and not worth rewriting.

Verified

  • README usage block, -t example, and stdin example all run verbatim and produce the documented output
  • Format-stability fixtures confirm all three versions still decrypt
  • Index cost claim (0.25s / 62 MB for 2 × 512 KiB) re-measured at 0.26s / 63 MB
  • lenticrypt.lenticrypt gone, from lenticrypt import ... intact, no namespace leaks, ENCRYPTION_VERSION 3 and __version__ 0.4.0 as documented
  • 256 passed; ruff and ty clean

🤖 Generated with Claude Code

https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy

ESultanik and others added 2 commits August 7, 2026 16:41
The README still told people to `pip3 install`, said nothing about which Pythons
are supported, and gave no guidance on the one thing that decides whether the
tool works at all: whether your keys have enough entropy for your plaintexts.

Adds sections on choosing and testing keys with `-t`, on `--seed` being for
testing rather than secrecy, on performance and where the time actually goes, on
running the tests, and a table of the three ciphertext format versions. Notes
that decryption now accepts plain as well as gzipped input, and `-` for stdin.

Every command in the README was run verbatim against this build, and every
number in it measured on this machine rather than estimated. The ciphertext
expansion figure is stated as a range across sizes -- 5.5x at 512 B down to 2.7x
at 512 KiB -- because a single number would have been wrong at both ends: the
dictionary header is a fixed cost that only amortises with size.

The changelog leads with the two defects that could lose or expose data, because
those are the reason to care about this release rather than the interesting ones:

  * `--length-checksum` corrupted plaintexts in 34 of 120 randomized round-trips,
    invisibly, because the length header truncated the damage away. Anyone with
    ciphertexts from that mode should check them.
  * Ciphertexts recorded the output filename in cleartext in the gzip header,
    which for a deniability tool is recoverable metadata in the first 30 bytes.

It also documents the removed and renamed API. `Encrypter`'s hooks changed shape
rather than changing meaning under the same names, so an out-of-tree subclass
fails loudly instead of silently doing something else.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy
Switches behaviour/colour/labelled/amortised/summarise/honouring/
desynchronisation/relabelled to their American spellings across the README,
changelog, source comments, docstrings, and the affected test names.

LICENSE is left alone: it is the verbatim GPL text.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy
@ESultanik ESultanik changed the title Document the current behaviour and add a changelog Document the current behavior and add a changelog Aug 7, 2026
@ESultanik
ESultanik merged commit 0ea37c7 into typing-complete Aug 7, 2026
12 checks passed
@ESultanik
ESultanik deleted the docs branch August 7, 2026 20:45
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