Skip to content

Commit feec6eb

Browse files
Roadmap: B8 (CI + fuzzing) complete - native server-build workflow added; mark master sequence step 2 done
1 parent 6b692a8 commit feec6eb

1 file changed

Lines changed: 18 additions & 15 deletions

File tree

planupdate.md

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ build, run the regression suite, (CP steps) screenshot-validate, then commit/pus
2323
+ move tag `v6.2.0` + clobber the release asset.
2424

2525
1. **B1 — security & correctness defects + secure defaults.****Done** (see Progress).
26-
2. **B8 (core) — CI + fuzzing.****In progress** — GitHub Actions added (CP build + CodeQL C#),
27-
reproducer regression tests for the B1 defects, and an over-the-wire protocol fuzz suite for the
28-
SMTP/IMAP/MIME parsers; remaining: native server-build CI (cached deps + DB service running the
29-
898 suite). (Coverage-guided libFuzzer is impractical in this environment — MSVC/ATL-coupled
30-
parsers, no fuzzer runtime — so the live over-the-wire fuzzer is the validated substitute.)
26+
2. **B8 (core) — CI + fuzzing.****Done.** GitHub Actions: `ci.yml` (Control Panel build,
27+
warnings-as-errors) + `codeql.yml` (C# static analysis) on hosted runners; `server-build.yml`
28+
(native C++ build on a self-hosted VS 2026/v145 runner + opt-in regression-suite run). Plus
29+
reproducer regression tests for the B1 defects and an over-the-wire protocol fuzz suite for the
30+
SMTP/IMAP/MIME parsers. (Coverage-guided libFuzzer is impractical in this environment — MSVC/ATL-
31+
coupled parsers, no fuzzer runtime — so the live over-the-wire fuzzer is the validated substitute.)
3132
3. **Track A Ph 0–1 — drop classic from installer + Control-Panel functional parity.** CP becomes the sole shipped GUI.
3233
4. **B3 — secrets & least-privilege** (DPAPI for INI/DB secrets; non-LocalSystem service).
3334
5. **B2 — auth modernization** (OAuth2 XOAUTH2/OAUTHBEARER, SCRAM-SHA-256, Argon2id + hash policy).
@@ -66,17 +67,19 @@ Commits: `6f7e019` (defects), `53ec538` (line-ending default), `9f3a51e` (AUTH c
6667

6768
### ⏳ Next
6869

69-
- **B8 — CI + fuzzing** *(in progress)*: added `.github/workflows/ci.yml` (Control Panel
70-
build, warnings-as-errors) and `codeql.yml` (C# static analysis), plus reproducer tests
70+
- **B8 — CI + fuzzing** *(done)*: `.github/workflows/ci.yml` (Control Panel build,
71+
warnings-as-errors) and `codeql.yml` (C# static analysis) on hosted runners; reproducer tests
7172
`TestAppendOversizedLiteralRejected` / `TestOversizedCommandLiteralRejected` (guard the B1
72-
IMAP fixes; pass 2/2). ✅ Added an **over-the-wire protocol fuzz suite**
73-
(`Security/ProtocolFuzz.cs`, commit `fc6d1da`): seeded malformed-input barrage against the live
74-
SMTP and IMAP command parsers and the inbound MIME parser, asserting the server never
75-
crashes/hangs/logs a fault (layered detection: liveness check + `ServiceRestartDetector` +
76-
`AssertNoReportedError`, with per-test `[Timeout]`). 3/3 pass (~231 s). Remaining: native
77-
**server-build CI** (cached OpenSSL/Boost/libpq + DB service running the 898 suite). Coverage-guided
78-
libFuzzer was assessed and is impractical here (no fuzzer runtime in the available clang; parsers
79-
are MSVC/ATL/Windows-coupled) — the live fuzzer is the validated substitute.
73+
IMAP fixes; pass 2/2); an **over-the-wire protocol fuzz suite** (`Security/ProtocolFuzz.cs`,
74+
commit `fc6d1da`): seeded malformed-input barrage against the live SMTP/IMAP command parsers and
75+
the inbound MIME parser, asserting the server never crashes/hangs/logs a fault (layered detection:
76+
liveness check + `ServiceRestartDetector` + `AssertNoReportedError`, per-test `[Timeout]`); 3/3 pass
77+
(~231 s); and a native **server-build workflow** (`server-build.yml`, commit `6b692a8`) for a
78+
self-hosted VS 2026/v145 runner that compiles the C++ server (build step locally proven via
79+
`build/build.ps1`) with an opt-in regression-suite run (reuses `build-tests.ps1`/`post-build.ps1`/
80+
`run-tests.ps1`). Coverage-guided libFuzzer was assessed and is impractical here (no fuzzer runtime
81+
in the available clang; parsers are MSVC/ATL/Windows-coupled) — the live fuzzer is the validated
82+
substitute.
8083
- ⬜ Modern default TLS cipher list (drop RC4/legacy CBC) + MD5-hash-accept deprecation —
8184
deferred to run with the TLS/auth-modernization work (higher regression risk).
8285
- ⬜ Then: Control-Panel parity track (Phases 0–4 below), then deeper hardening

0 commit comments

Comments
 (0)