Files
open-wc/targets/roadmap/08-quality-and-release.md
T

122 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# QAR — Fidelity, Quality, CI and Release
## Цель
Сделать точность, производительность и расширяемость проверяемыми свойствами, а не обещаниями.
## QAR-1. Fidelity lab
- Каталог сценариев original client 3.3.5a: setup, input, server state, expected output.
- Paired screenshots/video/log/packet/state evidence с provenance.
- Поведение классифицируется: `Unknown`, `Observed`, `Matched`, `Intentional deviation`, `Blocked`.
- Independent references могут подсказать hypothesis, но не повышают статус без evidence.
- Blizzlike bugs/exploits обрабатываются policy decision: protocol compatibility отдельно от harmful behavior.
## QAR-2. Test layers
- Native unit tests: parsers, crypto, compression, coordinates, math, caches.
- GDScript/domain unit tests: reducers, validators, commands, view models.
- Contract tests: packets, DB adapters, Lua API, content schemas, renderer facade.
- Scene tests: lifecycle, input, UI, renderer attachment, EditorPlugin reload.
- Integration: disposable core/DB, import/build/deploy, login/world/gameplay.
- E2E: leveling loop, dungeon, PvP/service flows и authoring vertical slices.
- Visual/performance and exploratory design tests complement automation.
## QAR-3. Godot testing stack
- Оценить GdUnit4 как candidate для Godot 4.6 GDScript/scene/CI tests.
- Native GDExtension tests используют подходящий C++ test runner отдельно от engine-internal doctest unless Godot itself is rebuilt.
- Headless commands возвращают non-zero и machine-readable JUnit/JSON reports.
- Scene tests не зависят от proprietary assets: synthetic fixtures or locally resolved optional corpus.
- Flaky retries не превращают failure в success; instability измеряется и исправляется.
## QAR-4. Golden and property testing
- Golden binary structures and exact-byte packet vectors.
- Parser round-trip where format permits; malformed/truncated/fuzz corpus.
- Coordinate transform property tests and known world points.
- Deterministic content manifests, SQL diff and migration before/after fixtures.
- Lua oracle corpus, navmesh reference counts/queries, material descriptor mappings.
## QAR-5. Performance budgets
- Startup/data check/login/world entry.
- Streaming cold/warm traversal and teleport.
- CPU/GPU frame p50/p95/p99/max hitch, draw calls, memory и descriptors.
- Network decode/apply queues and reconciliation error.
- UI `OnUpdate`, event fan-out, Lua allocations/GC.
- Editor import/bake/validation latency and cancellation responsiveness.
- Server deployment/playtest turnaround.
- Budgets hardware/profile-specific and trend tracked.
## QAR-6. Observability
- Structured logging categories and stable diagnostic codes.
- Correlation IDs session/job/entity/content change set.
- Runtime metrics: queues, entities, cache hit, resource counts, RIDs, packet rate.
- Editor metrics: jobs, diagnostics, artifact hashes, DB operations.
- Debug overlays and Godot profiler/visual profiler capture workflow.
- Payload, credentials, chat/personal content redacted by default.
## QAR-7. CI pipeline
Pull request gates:
1. formatting/static analysis/document links/target marker validation;
2. native build and unit tests;
3. headless Godot load and GDScript tests;
4. affected parser/protocol/content/adapter contracts;
5. deterministic artifact check;
6. renderer smoke if visual code changed;
7. license/dependency audit.
Nightly/weekly:
- disposable TrinityCore/AzerothCore integration;
- full packet/Lua/parser replay corpus;
- visual checkpoints on available GPU runners;
- long traversal, reconnect, cache migration and soak;
- previous schema/Godot/core compatibility matrix.
## QAR-8. Security and robustness
- Bounds checked binary parsing and fuzzing.
- Lua sandbox/taint/protected actions.
- DB least privilege, read-only default, production protection.
- Untrusted addon/content/plugin permission model.
- Dependency license/advisory/source pin audit.
- Atomic files, backup, recovery and rollback.
- No proprietary assets, secrets or production dumps in repository/artifacts.
## QAR-9. Documentation and decisions
- Architecture/API/schema changes update docs and ADR в том же work package.
- Каждый самостоятельный module имеет specification по `docs/DOCUMENTATION_STANDARD.md`: purpose, boundaries, public API, inputs/outputs, data flow, ownership, errors, tests и source map.
- Data-flow diagram обязательна всегда; state/sequence/dependency diagrams обязательны по сложности/lifecycle rules стандарта.
- Inline docs являются источником точной сигнатуры, module spec — источником концепции и фактического статуса.
- Tooling candidates tracked in `docs/TOOLING_CATALOG.md` with status and pinned version.
- Feature coverage links implementation, tests, fidelity evidence and known gaps.
- Generated API docs for documented GDScript/GDExtension public surface включаются в quality gate, когда pipeline подготовлен.
## QAR-9A. Code clarity and KISS
- Naming и simplicity проверяются по `docs/CODING_STANDARD.md`.
- Длинное точное имя предпочтительнее неочевидного сокращения; length не является целью сама по себе.
- Complexity metrics используются как сигнал для review, а не автоматическая причина переписывания domain-heavy code.
- Premature generic frameworks, service locators, duplicate registries и unmeasured native optimizations блокируют integration.
- Неизбежно сложный parser/protocol/streaming/UI security code обязан быть изолирован, иметь reference fixtures и диаграмму.
- Contributor workflow describes smallest reproducible diagnostic commands.
## QAR-10. Packaging and release
- Client ships without Blizzard data and guides user to select legally owned install.
- Import/cache first-run is resumable and reports disk/time requirements.
- Platform packages include matching GDExtension libraries and dependency notices.
- Content package and server module releases version independently with compatibility manifest.
- Save/settings/content schema migrations tested from supported previous versions.
- Release channels: developer, preview, stable; fidelity gaps visible in notes.
## Exit gate
Release candidate passes required core/platform/profile matrix; no critical unowned diagnostic; performance regression within approved bounds; artifacts reproducible and license-clean; known fidelity deviations documented.