Skip to content

Normalize invalid digest inputs - #32

Closed
biru-codeastromer wants to merge 3 commits into
mainfrom
codex/digest-input-errors
Closed

Normalize invalid digest inputs#32
biru-codeastromer wants to merge 3 commits into
mainfrom
codex/digest-input-errors

Conversation

@biru-codeastromer

@biru-codeastromer biru-codeastromer commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • validate runtime types at the exported sequence and dataset digest boundaries
  • reject mixed mapping keys, malformed pairs, boolean and oversized counts, and non-string digests as SS012
  • preserve valid digest ordering and byte framing

Validation

  • make release-gate
  • 107 passed, 1 optional skip
  • 92.07% coverage
  • clean wheel and source installation
  • dependency, text, repository, example, and full-history Gitleaks audits passed

This PR is intentionally left unmerged pending maintainer review.

@biru-codeastromer

Copy link
Copy Markdown
Contributor Author

The whitespace-encoding blocker is fixed at the new head. Sequence and dataset digests now require exactly 64 ASCII hexadecimal characters before decoding; space, newline, and tab spellings all return SS012. Exact local gate: 110 passed, 1 optional skip, 92.05% coverage, clean installs, dependency/repository/text audits, example, and full-history Gitleaks all green.

@biru-codeastromer

Copy link
Copy Markdown
Contributor Author

The streaming-stack interaction is fixed at the new head. sequence_digest now accepts one-pass iterables, explicitly rejects text and byte containers, and applies the exact 64-character grammar to every yielded value. The generator regression passes. Fresh local gate: 111 passed, 1 optional skip, 92.05% coverage, with clean installs and all audits green. Combined #23 byte-equivalence and bounded-memory validation follows.

@biru-codeastromer

Copy link
Copy Markdown
Contributor Author

Combined validation of #22, #23, and this exact head passed: 149 tests, 1 optional skip, 92.53% coverage, including streaming/in-memory byte equivalence, bounded-peak coverage, Parquet, signatures, clean 0.4.0 installation, all audits, example, and Gitleaks. Synthetic 10,000 and 50,000 record runs used 710,840 and 712,942 peak Python bytes respectively, confirming that the generator path remains bounded.

@biru-codeastromer

Copy link
Copy Markdown
Contributor Author

Superseded by merged #41, which preserves this change in the protected v0.4.0 release stack.

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.

3 participants