Skip to content

Commit 34f1739

Browse files
committed
Plan 1.0 source layout series
1 parent 5fe41a0 commit 34f1739

1 file changed

Lines changed: 38 additions & 6 deletions

File tree

docs/PLAN.md

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,11 @@ The current release path is:
256256
candidate had clean local release evidence, clean CI, and clean external
257257
pentest results. This line should change only for release blockers,
258258
documentation corrections, or evidence-policy fixes before tagging.
259-
- `1.0.x`: maintenance and assurance releases. Kani proof execution remains a
260-
high-priority `1.0.x` follow-up once Kani supports the pinned Rust toolchain.
259+
- `1.0.x`: maintenance, assurance, and move-only source-layout releases. Kani
260+
proof execution remains a high-priority `1.0.x` follow-up once Kani supports
261+
the pinned Rust toolchain. Before any `1.1` feature work, reduce
262+
`src/lib.rs` review size through small module splits that preserve the public
263+
API and behavior.
261264

262265
The initial `1.0.0` contract accepts the documented Kani verifier exception in
263266
[KANI.md](KANI.md). That exception is explicit replacement evidence, not a
@@ -569,12 +572,41 @@ admission over speed. Hardware acceleration is valuable only when the scalar
569572
implementation remains the correctness reference and every unsafe backend has
570573
clear admission evidence.
571574

575+
Before `1.1`, run a `1.0.x` source-layout series. These releases are intended
576+
to help review and community contribution without changing behavior.
577+
578+
Rules for every source-layout release:
579+
580+
- Move code only; do not mix logic edits with file extraction.
581+
- Preserve all public paths, re-exports, docs examples, and feature behavior.
582+
- Review with moved-code-aware diffs.
583+
- Run the full release gate, package verification, and public API audit.
584+
- Treat any behavior change, new API, or security semantics change as out of
585+
scope for that split release.
586+
587+
Recommended `1.0.x` source-layout sequence:
588+
589+
- `1.0.2`: split `std::io` streaming adapters and stream tests into
590+
`src/stream.rs`, preserving `base64_ng::stream::*`.
591+
- `1.0.3`: split runtime backend reporting and backend-policy types into
592+
`src/runtime.rs`.
593+
- `1.0.4`: split alphabets, custom alphabet validation, the alphabet macro, and
594+
profile wrappers into `src/alphabet.rs` and `src/profiles.rs`.
595+
- `1.0.5`: split stack/owned buffer wrappers and best-effort cleanup helpers
596+
into `src/buffers.rs` and `src/cleanup.rs`.
597+
- `1.0.6`: split constant-time-oriented decode, validation, masks, and CT
598+
barriers into `src/ct.rs`. This comes later because it is the most
599+
security-sensitive move.
600+
- `1.0.7`: split length helpers, line wrapping, and scalar core encode/decode
601+
helpers into `src/length.rs`, `src/wrap.rs`, and `src/scalar.rs` if the
602+
previous smaller splits stayed clean.
603+
572604
The recommended post-`1.0` SIMD path is incremental:
573605

574-
- `1.0.x`: maintenance, documentation, verifier compatibility, and assurance
575-
releases. Resolve Kani execution when the verifier supports the pinned Rust
576-
toolchain, refresh Miri/fuzz/dudect/generated-assembly evidence, and avoid
577-
broad API expansion.
606+
- Remaining `1.0.x`: maintenance, documentation, verifier compatibility, and
607+
assurance releases. Resolve Kani execution when the verifier supports the
608+
pinned Rust toolchain, refresh Miri/fuzz/dudect/generated-assembly evidence,
609+
and avoid broad API expansion.
578610
- `1.1`: replace the SSSE3/SSE4.1 fixed-block encode scaffold with real
579611
vectorized encode logic for Standard and URL-safe alphabets only, still
580612
non-dispatchable. The goal is meaningful scalar-equivalence tests, not active

0 commit comments

Comments
 (0)