Skip to content

api: Stop requiring private vector helpers #49

Open

Description

@BenWestgate

Before v1, constructing and checking reference vectors must not require underscore-prefixed imports, while unrelated implementation internals should remain private rather than being indiscriminately re-exported.

Implemented in focused PR #53:

  • publish the checksum specifications/u5 conversion/checksum-selection helpers needed for external vector work at their owning modules;
  • document a vector-construction workflow using supported names only;
  • audit production cross-module private imports and document the remaining correction/profile/wallet/Core/CLI couplings instead of renaming them cosmetically;
  • keep package-level codex32.__all__ deliberate.

The follow-up also makes chars_to_u5() ASCII-case-insensitive without Unicode folding and centralizes the shared private _ascii_lower helper used by the CLI path.

The final one-time refresh has been performed on the current runtime/API prerequisites. Current #53 head cde312b preserves the 23-name package-level codex32.__all__, has no inline review threads, and has a current-head Codex code ACK. Exact-head GitHub Python-package run 36985866683 completed successfully on cde312b; all 10 matrix jobs passed, including the Ubuntu 3.13 optimized suite, correction-constant verifier, strict mypy, Ruff check/format, frozen differential verifier, build, and wheel-environment verification. Local exact-head validation also recorded 952 tests normally and under python -O, 523 focused tests in both modes, 57/57 differential cases, and 5,199 installed logical lines under the 5,200 cap.

No code-review or automated-verification gap remains. Before integration, the Codex-authored second commit still requires responsible-human rewrite/squash under repository policy; keep the issue open through that human integration step.

Activity

  1. added
    enhancementNew feature or request
    gate: adversarial reviewResolve, merge, or explicitly defer before the next full adversarial review.
    on Sep 24, 2026
  2. BenWestgate commented on Sep 25, 2026

    @BenWestgate
    OwnerAuthor

    PR #53 addresses the user-facing part of this issue: reference-vector construction no longer requires underscore-prefixed helpers, and the supported module-level API is documented. I am keeping this issue open because production still has cross-module imports of underscore-prefixed internals (correction engine, GF/profile, wallet/Core, and CLI couplings). Those should be reviewed as module-boundary cleanup rather than being implicitly closed by the vector-API PR.

  3. BenWestgate commented on Sep 25, 2026

    @BenWestgate
    OwnerAuthor

    Production-import audit completed against PR #53: 48 underscore-prefixed symbols are used across 64 same-package import edges, all inside the four internal boundaries documented by #53 (correction engine, profile/artifact construction, wallet/Core, and CLI). None is required by the supported reference-vector workflow, and the package-level API remains the deliberate 24-name codex32.__all__. Renaming these internals would either publish construction/search hooks or merely remove Python’s private-name signal without improving the external API. #53 therefore satisfies this issue’s acceptance criteria and now closes it on merge; no separate pre-v1 rename PR is warranted.

  4. added
    area: apiPublic and supported Python API boundaries.
    area: bip93BIP93 encoding, checksum, parsing, and format rules.
    on Sep 25, 2026
  5. BenWestgate commented on Sep 28, 2026

    @BenWestgate
    OwnerAuthor

    Audit-number clarification: at #53 head 7311db81, the production tree has 48 distinct private (module, symbol) pairs across 64 same-package import occurrences, representing 47 unique private symbol spellings. The documented vector example runs without private imports, and codex32.__all__ remains exactly 24 names. This does not change the disposition: #53 satisfies the external API requirement; the remaining private imports are internal subsystem boundaries documented in docs/developer/api.md.

  6. added a commit that references this issue on Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: apiPublic and supported Python API boundaries.area: bip93BIP93 encoding, checksum, parsing, and format rules.enhancementNew feature or requestgate: adversarial reviewResolve, merge, or explicitly defer before the next full adversarial review.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions