Repository navigation
api: Stop requiring private vector helpers #49
Description
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
BenWestgate commentedon Sep 25, 2026
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.
BenWestgate commentedon Sep 25, 2026
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.BenWestgate commentedon Sep 28, 2026
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, andcodex32.__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 indocs/developer/api.md.Expose vector construction helpers