Skip to content

feat: crib-anchored scoring + Bifid gather-variant coverage - #4

Merged
0xdiid merged 2 commits into
mainfrom
feat/crib-anchor-and-bifid-gather
Jul 25, 2026
Merged

feat: crib-anchored scoring + Bifid gather-variant coverage#4
0xdiid merged 2 commits into
mainfrom
feat/crib-anchor-and-bifid-gather

Conversation

@0xdiid

@0xdiid 0xdiid commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Two general capabilities distilled from fractionation cryptanalysis work:

  • crib_anchor: score a guessed crib's best-over-position appearance in a decoded candidate, to anchor an SA objective when the plaintext register (terse, name-heavy, numeric) defeats n-gram fitness. Decoder-agnostic; carries the calibration guidance as code (SWEET_SPOT, crib_length_advice): a short crib floods, an over-long one won't converge, one contiguous ~16-20 letter crib is the sweet spot.

  • fractionation: bifid6 now takes a gather read-order parameter across encode/decode/solve_bifid6 with GATHER_VARIANTS (all 8 seriation orders); the "std" default is fully backward-compatible. Closes a silent-miss blind spot -- several read-orders are statistically indistinguishable, so a solver assuming only the standard order fails quietly on the others.

Tested: round-trips for all 8 gather variants, std backward-compat, crib-anchor unit + behavioral. ruff/mypy clean.

Claude-Session: https://claude.ai/code/session_01EJjjwhsWqwb5GRvD4QiA5i

0xdiid and others added 2 commits July 24, 2026 18:19
Two general capabilities distilled from fractionation cryptanalysis work:

* crib_anchor: score a guessed crib's best-over-position appearance in a decoded
  candidate, to anchor an SA objective when the plaintext register (terse,
  name-heavy, numeric) defeats n-gram fitness. Decoder-agnostic; carries the
  calibration guidance as code (SWEET_SPOT, crib_length_advice): a short crib
  floods, an over-long one won't converge, one contiguous ~16-20 letter crib is
  the sweet spot.

* fractionation: bifid6 now takes a `gather` read-order parameter across
  encode/decode/solve_bifid6 with GATHER_VARIANTS (all 8 seriation orders);
  the "std" default is fully backward-compatible. Closes a silent-miss blind
  spot -- several read-orders are statistically indistinguishable, so a solver
  assuming only the standard order fails quietly on the others.

Tested: round-trips for all 8 gather variants, std backward-compat, crib-anchor
unit + behavioral. ruff/mypy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EJjjwhsWqwb5GRvD4QiA5i
Pre-existing formatting drift (byte-identical to main): the repo's
`ruff format --check .` now formats fenced code blocks in markdown, and this
docs file predates that. Whitespace-only — blank line after import, single
space before inline comments.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EJjjwhsWqwb5GRvD4QiA5i
@0xdiid
0xdiid merged commit c8ba7f2 into main Jul 25, 2026
4 checks passed
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