124 lines
4.0 KiB
Markdown
124 lines
4.0 KiB
Markdown
|
|
# Shade V4.0 — External Audit, Consolidation, GA
|
|||
|
|
|
|||
|
|
**Status:** Done — tagget som 4.0.0 (2026-05-03)
|
|||
|
|
**Effort:** M (audit-driven)
|
|||
|
|
**Forrige:** V3.1 → V3.12 alle merget
|
|||
|
|
**Adresserer:** V2.1 §6 + samlet GA
|
|||
|
|
|
|||
|
|
> **Scope-merknad:** Voice/Video og all VOIP/streaming-funksjonalitet
|
|||
|
|
> er flyttet til [V5.0](../V5.0.md). 4.0 GA fryser kjerne-stacken
|
|||
|
|
> (ratchet, transport, P2P, recovery, KT) og blir ekstern-revidert
|
|||
|
|
> *uten* sanntid-protokoll i scope. Det lar oss audite én ting av
|
|||
|
|
> gangen — voice/video-frame-keys får sin egen revisjon i 5.0-vinduet.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Mål
|
|||
|
|
|
|||
|
|
Shade 4.0 er **GA-merket release** der alt diskutert i V2.1, V2.2, V2.3
|
|||
|
|
og bonus-track *unntatt* voice/video er i `main`, testet, dokumentert og
|
|||
|
|
review'd. Dette er konsolideringsfasen, ikke ny funksjonsbygging.
|
|||
|
|
Sanntid-laget (voice, video, broadcast) ligger i V5.0 og utvikles oppå
|
|||
|
|
den låste 4.0-stacken.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Scope
|
|||
|
|
|
|||
|
|
### Inn
|
|||
|
|
|
|||
|
|
- **Ekstern crypto-review** av:
|
|||
|
|
- Core (X3DH + ratchet + sender-keys).
|
|||
|
|
- Wire 0x02 + streams 0x11.
|
|||
|
|
- Storage encryption (V3.2).
|
|||
|
|
- Recovery (V3.10).
|
|||
|
|
- WebRTC P2P transport-binding (V3.11).
|
|||
|
|
- Key transparency (V3.12, hvis implementert).
|
|||
|
|
- *(Voice/Video frame keys revideres separat i V5.0-vinduet.)*
|
|||
|
|
- **Migration-guide** 0.3.x → 4.0 — hver wire-bump, schema-endring og
|
|||
|
|
opt-in flagg dokumentert.
|
|||
|
|
- **Soak-testing** — kjør alle pakker i kombinerte stress-tester i 2+
|
|||
|
|
uker.
|
|||
|
|
- **Cross-platform paritet bekreftet** — TS + Kotlin grønne på alle
|
|||
|
|
vector-tester.
|
|||
|
|
- **Dokumentasjons-pass** — README, alle docs/ revidert for 4.0-narrativ.
|
|||
|
|
- **Release-notes + announcement-post.**
|
|||
|
|
|
|||
|
|
### Ut
|
|||
|
|
|
|||
|
|
- Ny krypto.
|
|||
|
|
- Nye pakker.
|
|||
|
|
- Ny wire-format-bump (vi nullstiller her, neste kommer i 4.1+).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Pre-flight checklist
|
|||
|
|
|
|||
|
|
- [ ] V3.1 → V3.12 alle merget.
|
|||
|
|
- [ ] Ingen åpne kritiske eller høy-alvor security issues.
|
|||
|
|
- [ ] Alle test-vectors grønne TS + Kotlin.
|
|||
|
|
- [ ] Production-checklist (V3.1) testet av minst én reell deploy.
|
|||
|
|
- [ ] OpenAPI dekker alle HTTP-flater.
|
|||
|
|
- [ ] Threat model speiler alt nytt (eksklusive sanntid — det er V5.0).
|
|||
|
|
- [ ] Eksisterende 0.3.x → 4.0 migration-CLI testet på reell DB.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Crypto-review-prep
|
|||
|
|
|
|||
|
|
Forberedelse til ekstern reviewer:
|
|||
|
|
|
|||
|
|
1. **Pakke "review-bundle"** — én PR med:
|
|||
|
|
- Linker til alle protokoll-spec-filer.
|
|||
|
|
- Trusselmodellen.
|
|||
|
|
- Antagelser og kjente begrensninger.
|
|||
|
|
- Reproduserbar build-instruksjon.
|
|||
|
|
2. **Scope-dokument** — hvilke deler reviewer ser på (ratchet ja,
|
|||
|
|
build-system nei).
|
|||
|
|
3. **Kontakt-prosess** — hvordan rapportere findings.
|
|||
|
|
4. **Tidslinje** — typisk 4–8 uker review-vindu.
|
|||
|
|
|
|||
|
|
Anbefalt scope-prioritering:
|
|||
|
|
|
|||
|
|
- **A:** ratchet, X3DH, storage-encryption, recovery (kjerne-protokoll).
|
|||
|
|
- **B:** WebRTC P2P transport-binding, KT-log (hvis implementert).
|
|||
|
|
- **C:** transport-lag, observability (lavere risiko).
|
|||
|
|
- *(Frame-keys er ikke i 4.0-scope — de revideres når V5.0 lander.)*
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Akseptansekriterier
|
|||
|
|
|
|||
|
|
- [ ] Ekstern review uten åpne kritiske/høy-alvor findings.
|
|||
|
|
- [ ] Migration-guide brukt vellykket på minst én ekte 0.3.x-deploy.
|
|||
|
|
- [ ] Cross-platform parity verifisert i CI.
|
|||
|
|
- [ ] All `docs/V*.md` arkivert under `docs/archive/` med "DONE"-status.
|
|||
|
|
- [ ] CHANGELOG.md har 4.0-seksjon.
|
|||
|
|
- [ ] Versjon bumpet, alle pakker publisert til Gitea-registry.
|
|||
|
|
- [ ] Docker-image `gt.zyon.no/stian/shade-prekey:4.0.0` publisert.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Etter 4.0
|
|||
|
|
|
|||
|
|
V4.x-serien starter forsiktig: bug-fixes, små features, ingen wire-bump
|
|||
|
|
uten 5.0-vindu.
|
|||
|
|
|
|||
|
|
**[V5.0](../V5.0.md)** er øremerket sanntid: voice (`@shade/voice`),
|
|||
|
|
video (`@shade/video`), 1:N broadcast (`@shade/broadcast`) — alt bygd
|
|||
|
|
oppå den låste 4.0-stacken med SFrame-frame-keys avledet fra
|
|||
|
|
ratchet-sesjonen. V5.0 får sin egen ekstern revisjon av frame-key-
|
|||
|
|
delen før release.
|
|||
|
|
|
|||
|
|
Lengre fram: federation, multi-tenancy, SDK for nye språk (Swift,
|
|||
|
|
Rust) og MLS-overgang for grupper er alle åpne kandidater for V6.0+.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Risiko
|
|||
|
|
|
|||
|
|
- **Audit-findings.** Kan kreve ny implementasjon i siste sekund. Mitiger
|
|||
|
|
ved tidlig review-prep og prioritering av A-scope først.
|
|||
|
|
- **Scope creep.** "Bare en ting til" — V4.0 er låst til konsolidering.
|
|||
|
|
Nye features = V4.1+.
|