rusty-pwgen 0.2.0

Generate pronounceable or random passwords from the OS CSPRNG — a Rust port of Theodore Ts'o's `pwgen` with strict-compat mode, deterministic `-H` reproducible mode (SHA256 + ChaCha20), and a typed library API.
Documentation
# rusty-pwgen Design Notes

Pointers back to the canonical spec/plan:
- [spec.md]../../rusty/specs/00005-pwgen-port/spec.md
- [plan.md]../../rusty/specs/00005-pwgen-port/plan.md

## Upstream Dependency Status

E003 (reusable port-ci.yml workflow) does not yet exist in the umbrella repo. Inline CI / release workflows are duplicated from `rusty-pee/.github/workflows/{ci,release}.yml` as a pragmatic-path approach.

## Component Map

| Component | File | Purpose |
|---|---|---|
| CLI Frontend | `src/cli.rs` | clap derive `Cli` struct |
| Mode Resolver | `src/mode.rs` | `CompatibilityMode` precedence ladder |
| Strict Parser | `src/strict.rs` | Hand-rolled argv parser + moreutils-format errors |
| RNG Source | `src/rng.rs` | OsRng wrapper + ChaCha20 (deterministic) |
| Seed Loader | `src/seed.rs` | `-H` SHA256 + file/stdin loader |
| Char Set Builder | `src/charset.rs` | Active character set per flags |
| Phoneme Algo | `src/phoneme.rs` | Pronounceable (consonant/vowel alternation) |
| Secure Algo | `src/secure.rs` | Uniform random sampling |
| Output Formatter | `src/output.rs` | TTY detection + columnar/single-column |
| Library API | `src/builder.rs` | `Pwgen` + `PwgenBuilder` |

## Test-Only Env Vars

| Env var | Purpose |
|---|---|
| `RUSTY_PWGEN_STRICT` | Activates Strict mode (FR-022). |
| `RUSTY_PWGEN_TEST_COLUMNS` | Overrides terminal-width detection for column-formatting tests. Precedence: env > `terminal_size` > 80-col fallback. Value range `[1, 1000]`; out-of-range values are ignored. Test-only backdoor — excluded from `--help` output. |