Add comprehensive provisional full-game backlog
Browse files- docs/PROVISIONAL_TODO.md +512 -0
- docs/README.md +2 -1
docs/PROVISIONAL_TODO.md
ADDED
|
@@ -0,0 +1,512 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Provisional full-game backlog
|
| 2 |
+
|
| 3 |
+
Planning revision: **2026-10-11**. Target: the supplied Urban Terror 4.3.4 reference, rewritten in **Rust + Bevy + Solari**, with a working client and dedicated server on **macOS and Linux**.
|
| 4 |
+
|
| 5 |
+
This is a large provisional work breakdown, not a claim that the game has been fully understood. It expands the remaining work and makes dependencies visible. The canonical [research](REVERSE_ENGINEERING_TODO.md), [asset pipeline](ASSET_PIPELINE_TODO.md), [rewrite](RUST_BEVY_SOLARI_TODO.md), [validation](VALIDATION_AND_MILESTONES.md) and [file coverage](FILE_COVERAGE_TODO.md) checklists retain their current statuses. `PROV` IDs are stable planning references; all items below start unchecked. When promoting an item, link it to the canonical task and its evidence rather than copying completion status automatically.
|
| 6 |
+
|
| 7 |
+
## Goals and scope
|
| 8 |
+
|
| 9 |
+
- Document everything found in the installation: binaries, libraries and DLL dependencies, QVMs, shaders, rendering, logic, textures, maps, models, audio, configuration, resources, metadata and auxiliary content.
|
| 10 |
+
- Preserve and analyze every extracted occurrence, including overridden, duplicate, unused and unknown variants. A representative example does not close a format or content family.
|
| 11 |
+
- Produce reproducible unpacking, analysis, conversion and validation scripts, then versioned runtime content with full source provenance.
|
| 12 |
+
- Replace the original client and server behavior with maintainable Rust systems and native platform delivery. The release must not require original executable or QVM gameplay code.
|
| 13 |
+
- Establish Solari feasibility on the intended macOS and Linux hardware before depending on its capabilities. Preserve gameplay-critical visibility and record rendering deviations explicitly.
|
| 14 |
+
- Keep original installation objects exclusively in ignored `.cache/`; extracted, analysis and converted assets belong under `assets/` through Git LFS/Xet. Code and documentation belong in ordinary Git in the same Hugging Face repository.
|
| 15 |
+
|
| 16 |
+
See [GOALS.md](GOALS.md) for the full definition of completion and [STORAGE.md](STORAGE.md) for the enforced repository policy.
|
| 17 |
+
|
| 18 |
+
## Evidence baseline and limits
|
| 19 |
+
|
| 20 |
+
The current inventory records 39 original files and 23 PK3 archives. Extraction preserves 9,835 file occurrences and 743 directory entries. Static research has decoded all 659,048 QVM instructions and disassembled the eight supplied native files. Decoding and disassembly do not establish full semantic coverage. Imported or dynamically loaded DLLs are within scope even when no standalone DLL exists in the supplied snapshot.
|
| 21 |
+
|
| 22 |
+
Read [findings](FINDINGS.md), [extraction evidence](extraction/README.md), [binary research](research/README.md), [native coverage](research/native/COVERAGE.md), [authentication drop](research/AUTH_DROP.md), [deferred authentication](research/DEFERRED_AUTH.md) and [engine control](research/ENGINE_CONTROL.md) before using this list. The original binaries and complete QVM modules have not been launched in the current research baseline. Synthetic instruction fixtures are explicitly narrower evidence than original-runtime tests.
|
| 23 |
+
|
| 24 |
+
## Working rules and ordering
|
| 25 |
+
|
| 26 |
+
Each task needs a concrete deliverable, a reproduction command or scenario, and recorded verification before completion. Format and subsystem tasks apply to every applicable inventory item. Write evidence with source hashes and exact addresses, instruction indices or member offsets; label hypotheses and approximations. Record negative findings and unexplained bytes as well as successful interpretations.
|
| 27 |
+
|
| 28 |
+
Use this dependency order: inventory and provenance → static recovery plus reference observation → behavioral specifications and fixtures → conversion contracts → a platform-verified vertical slice → complete implementation and content coverage → cross-platform conformance and release. Static analysis, reference-harness preparation and format inspection can progress together; renderer feasibility should happen early. There are no time estimates here because unresolved behavior and platform feasibility can change the work materially.
|
| 29 |
+
|
| 30 |
+
For implementation items, the minimum done condition is a documented contract, an implementation consuming traceable content, and a relevant reference comparison on the required platforms. For research items, it is reproducible evidence and explicit remaining uncertainty. For asset items, it is validated conversion with source/variant provenance and a loss report. Apply the [research ledger conventions](RESEARCH_LEDGER.md) throughout.
|
| 31 |
+
|
| 32 |
+
## Work breakdown
|
| 33 |
+
|
| 34 |
+
### First research batch
|
| 35 |
+
|
| 36 |
+
Start with the open questions raised by the current binary evidence. These tasks depend on the linked reports, not on a working rewrite.
|
| 37 |
+
|
| 38 |
+
- [ ] PROV-001: Trace Com_EventLoop, Com_Frame and SV_Frame together, including elapsed-time adjustment, timescale, pause, catch-up and restart ordering; extend RE-231.
|
| 39 |
+
- [ ] PROV-002: Recover the authentication announcement helper’s format strings, recipients, role/status predicates and third argument; extend RE-230.
|
| 40 |
+
- [ ] PROV-003: Find every reset and aliased access to the deferred authentication fields, beyond literal offset references.
|
| 41 |
+
- [ ] PROV-004: Trace Linux error recovery through every mode, recursive errors, rapid-error promotion and cleanup; compare with Windows and macOS.
|
| 42 |
+
- [ ] PROV-005: Render the reconstructed Windows icons and classify the surplus DIB bytes with byte-preserving evidence; extend RE-217.
|
| 43 |
+
- [ ] PROV-006: Trace address-parser failures, unchecked send arguments and client-drop state transitions across all native targets.
|
| 44 |
+
- [ ] PROV-007: Build a prioritized list of the remaining 519 unresolved QVM indirect-call sites, with targets, confidence and blockers.
|
| 45 |
+
- [ ] PROV-008: Create a cross-platform comparison table for the custom authentication exports and traps; distinguish absence from missing evidence.
|
| 46 |
+
- [ ] PROV-009: Define a reference execution harness and select an environment for each original architecture before launching binaries.
|
| 47 |
+
- [ ] PROV-010: Produce the first reference fixture for one fully traced gameplay behavior, recording synthetic versus original-runtime evidence.
|
| 48 |
+
- [ ] PROV-011: Audit existing scripts for assumptions about instruction indices, signed arithmetic and partial function boundaries.
|
| 49 |
+
- [ ] PROV-012: Promote the next bounded research batch into canonical RE tasks with concrete deliverables and checks.
|
| 50 |
+
|
| 51 |
+
### Evidence, scope and coverage
|
| 52 |
+
|
| 53 |
+
Apply these tasks to every installation file and every archive-member occurrence. Existing inventory and extraction manifests are the starting point.
|
| 54 |
+
|
| 55 |
+
- [ ] PROV-013: Freeze a reference snapshot identity with original hashes, archive identities and game version.
|
| 56 |
+
- [ ] PROV-014: Reconcile the installation inventory against the cache, including hidden files and auxiliary directories.
|
| 57 |
+
- [ ] PROV-015: Assign every file an owner, format, analysis status and final disposition in a machine-readable coverage registry.
|
| 58 |
+
- [ ] PROV-016: Assign every archive member occurrence a source identity independent of its eventual runtime path.
|
| 59 |
+
- [ ] PROV-017: Record overridden, duplicate, case-colliding and apparently unused variants without discarding them.
|
| 60 |
+
- [ ] PROV-018: Classify unknown file signatures through bounded parsers and hex inspection.
|
| 61 |
+
- [ ] PROV-019: Record trailing bytes, alignment, padding and unexplained regions for every binary format.
|
| 62 |
+
- [ ] PROV-020: Separate verified observations, source-based comparisons, hypotheses and implementation decisions in reports.
|
| 63 |
+
- [ ] PROV-021: Attach addresses, instruction indices, offsets, hashes and reproduction commands to behavior claims.
|
| 64 |
+
- [ ] PROV-022: Document uncertainty and competing interpretations instead of assigning premature semantic names.
|
| 65 |
+
- [ ] PROV-023: Record all scripts’ versions, inputs, outputs, dependencies and deterministic regeneration commands.
|
| 66 |
+
- [ ] PROV-024: Create a report index that connects each behavior specification to evidence, fixtures and implementation tasks.
|
| 67 |
+
- [ ] PROV-025: Audit all completed canonical tasks against their documented acceptance evidence.
|
| 68 |
+
- [ ] PROV-026: Define how newly discovered files, services or behaviors expand the backlog.
|
| 69 |
+
- [ ] PROV-027: Document the handling of authoring files, examples, broken content and nonplayable maps.
|
| 70 |
+
- [ ] PROV-028: Establish a final coverage gate requiring a justified disposition for every file, member variant and unknown region.
|
| 71 |
+
|
| 72 |
+
### Reference execution and observation
|
| 73 |
+
|
| 74 |
+
Execution work is future work: static decoding and synthetic instruction tests do not establish runtime conformance.
|
| 75 |
+
|
| 76 |
+
- [ ] PROV-029: Prepare reproducible reference environments for Linux x86 and x86_64 executables.
|
| 77 |
+
- [ ] PROV-030: Prepare a reference environment for Windows PE32 client and dedicated server.
|
| 78 |
+
- [ ] PROV-031: Prepare a compatible reference environment for the macOS x86_64 executable and bundled SDL library.
|
| 79 |
+
- [ ] PROV-032: Record original platform prerequisites and distinguish environmental failures from game behavior.
|
| 80 |
+
- [ ] PROV-033: Capture process arguments, environment, configuration, package search paths and startup logs.
|
| 81 |
+
- [ ] PROV-034: Instrument native-to-QVM calls, syscall arguments, return values and error exits.
|
| 82 |
+
- [ ] PROV-035: Capture user commands, snapshots, entity states and game events at stable boundaries.
|
| 83 |
+
- [ ] PROV-036: Control seeds, clocks, inputs and initial state for repeatable gameplay traces.
|
| 84 |
+
- [ ] PROV-037: Capture reference images with camera, map, settings, frame time and viewport metadata.
|
| 85 |
+
- [ ] PROV-038: Capture audio events and output with timing and channel metadata.
|
| 86 |
+
- [ ] PROV-039: Capture network traffic for local server, remote connection, authentication and downloads.
|
| 87 |
+
- [ ] PROV-040: Create isolated local substitutes for unavailable external endpoints where protocol evidence permits.
|
| 88 |
+
- [ ] PROV-041: Document what cannot be observed when historical services are unavailable.
|
| 89 |
+
- [ ] PROV-042: Build replayable scenarios for startup, connect, map change, reconnect, disconnect and shutdown.
|
| 90 |
+
- [ ] PROV-043: Test malformed input and recoverable failure paths with resource and timeout limits.
|
| 91 |
+
- [ ] PROV-044: Compare synthetic QVM fixtures against original execution before using them as conformance oracles.
|
| 92 |
+
|
| 93 |
+
### QVM decoding, ABI and program recovery
|
| 94 |
+
|
| 95 |
+
Extend the existing complete instruction decode into a behavior specification for cgame, qagame and ui.
|
| 96 |
+
|
| 97 |
+
- [ ] PROV-045: Validate QVM headers, segments, BSS, relocation/jump metadata and loader rejection rules.
|
| 98 |
+
- [ ] PROV-046: Verify function boundaries, shared tails and unusual control flow against VM interpreter semantics.
|
| 99 |
+
- [ ] PROV-047: Recover all vmMain command dispatch cases and argument layouts for each module.
|
| 100 |
+
- [ ] PROV-048: Recover the complete standard and custom syscall table for each module.
|
| 101 |
+
- [ ] PROV-049: Trace every direct and indirect call into a module call graph.
|
| 102 |
+
- [ ] PROV-050: Resolve jump tables, computed branches and function-pointer tables with bounds and provenance.
|
| 103 |
+
- [ ] PROV-051: Track globals and local-stack objects through loads, stores, aliases and pointer arithmetic.
|
| 104 |
+
- [ ] PROV-052: Recover arrays and record strides, capacities, sentinels and initialization order.
|
| 105 |
+
- [ ] PROV-053: Recover game, client, player, entity, UI and network-related structure layouts.
|
| 106 |
+
- [ ] PROV-054: Identify constants, flags, enums and bitfields without treating inferred names as original symbols.
|
| 107 |
+
- [ ] PROV-055: Recover string tables, formatting conventions, localization assumptions and command parsers.
|
| 108 |
+
- [ ] PROV-056: Identify compiler/library idioms and separate them from game-specific behavior.
|
| 109 |
+
- [ ] PROV-057: Document integer overflow, shifts, sign extension, division and float conversion semantics.
|
| 110 |
+
- [ ] PROV-058: Document VM memory checking, pointer translation and host-call marshalling.
|
| 111 |
+
- [ ] PROV-059: Determine required QVM version and extension support across native engines.
|
| 112 |
+
- [ ] PROV-060: Recover cgame prediction, interpolation, HUD and visual event processing.
|
| 113 |
+
- [ ] PROV-061: Recover qagame authoritative initialization, simulation, client lifecycle and shutdown.
|
| 114 |
+
- [ ] PROV-062: Recover UI menu flow, settings, server browser and authentication response handling.
|
| 115 |
+
- [ ] PROV-063: Recover bot-related QVM behavior and engine interfaces.
|
| 116 |
+
- [ ] PROV-064: Compare common algorithms duplicated between modules for drift or shared invariants.
|
| 117 |
+
- [ ] PROV-065: Build an annotated intermediate representation suitable for cross-references and structured analysis.
|
| 118 |
+
- [ ] PROV-066: Create small executable fixtures for recovered branches and boundary conditions.
|
| 119 |
+
- [ ] PROV-067: Track unresolved instructions, calls and data regions explicitly through completion.
|
| 120 |
+
- [ ] PROV-068: Document which VM behavior is research-only and which semantics the Rust implementation must preserve.
|
| 121 |
+
|
| 122 |
+
### Native binaries, libraries and DLLs
|
| 123 |
+
|
| 124 |
+
Analyze all eight supplied native files and all discovered imported, dynamically loaded or statically linked components.
|
| 125 |
+
|
| 126 |
+
- [ ] PROV-069: Map executable headers, sections, segments, entry points and load permissions for every target.
|
| 127 |
+
- [ ] PROV-070: Analyze imports, exports, relocations, thunks, linkage tables and dynamic loader behavior.
|
| 128 |
+
- [ ] PROV-071: Inventory external Windows DLL requirements and dynamically constructed library names.
|
| 129 |
+
- [ ] PROV-072: Inventory Linux shared libraries, symbol versions and platform-specific dependencies.
|
| 130 |
+
- [ ] PROV-073: Inventory macOS frameworks, dylibs, install names and architecture requirements.
|
| 131 |
+
- [ ] PROV-074: Recover statically linked library boundaries and likely versions with confidence labels.
|
| 132 |
+
- [ ] PROV-075: Compare the bundled SDL implementation and retained symbols with pinned upstream sources.
|
| 133 |
+
- [ ] PROV-076: Annotate all retained STABS records and map source/object provenance to code ranges.
|
| 134 |
+
- [ ] PROV-077: Document the absence or presence of debug types and limits on structure recovery.
|
| 135 |
+
- [ ] PROV-078: Classify all native text ranges, data tables, resources and unexplained gaps.
|
| 136 |
+
- [ ] PROV-079: Analyze startup, command-line parsing, configuration loading and shutdown order.
|
| 137 |
+
- [ ] PROV-080: Recover platform input, window, clipboard, cursor, focus and fullscreen behavior.
|
| 138 |
+
- [ ] PROV-081: Recover audio initialization, mixing interfaces, device changes and cleanup.
|
| 139 |
+
- [ ] PROV-082: Recover native renderer entry points, GL state management and shader/backend paths.
|
| 140 |
+
- [ ] PROV-083: Recover engine networking, packet queues, address handling and socket error policy.
|
| 141 |
+
- [ ] PROV-084: Recover native VM loading, dispatch, extension gates and runtime checks.
|
| 142 |
+
- [ ] PROV-085: Recover filesystem mounting, package checks, pure-server behavior and downloads.
|
| 143 |
+
- [ ] PROV-086: Recover console, command buffer, cvar registry and command registration semantics.
|
| 144 |
+
- [ ] PROV-087: Analyze threading, synchronization, jobs, signal handlers and crash paths.
|
| 145 |
+
- [ ] PROV-088: Classify anti-cheat, authentication and integrity-related code with precise evidence.
|
| 146 |
+
- [ ] PROV-089: Recover PE resources and inspect all icon planes, masks and surplus data.
|
| 147 |
+
- [ ] PROV-090: Analyze macOS application metadata and platform bootstrap code.
|
| 148 |
+
- [ ] PROV-091: Produce a per-component decision: replace in Rust, use a dependency, retain only as research evidence, or investigate further.
|
| 149 |
+
- [ ] PROV-092: Verify every replacement decision against the required behavior rather than library-name similarity.
|
| 150 |
+
|
| 151 |
+
### Engine timing, filesystem and configuration
|
| 152 |
+
|
| 153 |
+
Specify engine services before relying on them in gameplay or asset conversion.
|
| 154 |
+
|
| 155 |
+
- [ ] PROV-093: Specify engine, simulation, render, server and network clock domains and units.
|
| 156 |
+
- [ ] PROV-094: Specify clock wrap, discontinuity, pause, timescale and long-frame behavior.
|
| 157 |
+
- [ ] PROV-095: Specify fixed-step accumulation, catch-up limits and tick ordering.
|
| 158 |
+
- [ ] PROV-096: Specify map restart, full map change and persistent versus reset state.
|
| 159 |
+
- [ ] PROV-097: Specify error modes, cleanup order, frame aborts and fatal termination.
|
| 160 |
+
- [ ] PROV-098: Recover archive discovery and runtime mount precedence from original execution.
|
| 161 |
+
- [ ] PROV-099: Recover loose-file overrides, writable paths and case-sensitive lookup behavior.
|
| 162 |
+
- [ ] PROV-100: Recover package checksums, pure lists and client package eligibility.
|
| 163 |
+
- [ ] PROV-101: Specify missing-file behavior, fallback lookup and diagnostics.
|
| 164 |
+
- [ ] PROV-102: Recover cvar types, defaults, flags, latched changes and persistence.
|
| 165 |
+
- [ ] PROV-103: Recover console command tokenization, quoting, aliases and buffered execution.
|
| 166 |
+
- [ ] PROV-104: Recover config execution order, bindings and command-line overrides.
|
| 167 |
+
- [ ] PROV-105: Recover save locations and configuration migration behavior.
|
| 168 |
+
- [ ] PROV-106: Specify server info, user info and protocol-visible key/value constraints.
|
| 169 |
+
- [ ] PROV-107: Specify file-handle, memory and other resource limits and their failure behavior.
|
| 170 |
+
- [ ] PROV-108: Document resource lifetime across reconnect, restart and renderer reset.
|
| 171 |
+
|
| 172 |
+
### Network, external services and demos
|
| 173 |
+
|
| 174 |
+
Do not assume historical services remain available; preserve protocol evidence and make replacement policy explicit.
|
| 175 |
+
|
| 176 |
+
- [ ] PROV-109: Recover packet framing, endian conventions, limits and sequence arithmetic.
|
| 177 |
+
- [ ] PROV-110: Recover connectionless discovery, challenge, connect and rejection messages.
|
| 178 |
+
- [ ] PROV-111: Recover reliable command queues, acknowledgements, retransmission and overflow behavior.
|
| 179 |
+
- [ ] PROV-112: Recover netchannel fragmentation, ordering, duplicate handling and timeouts.
|
| 180 |
+
- [ ] PROV-113: Recover user-command encoding, deltas, timestamps and validation.
|
| 181 |
+
- [ ] PROV-114: Recover snapshot/entity/player-state serialization and baseline selection.
|
| 182 |
+
- [ ] PROV-115: Recover configstrings, gamestate transmission and protocol negotiation.
|
| 183 |
+
- [ ] PROV-116: Recover bandwidth, rate, packet timing and snapshot scheduling settings.
|
| 184 |
+
- [ ] PROV-117: Recover prediction acknowledgements and reconciliation inputs.
|
| 185 |
+
- [ ] PROV-118: Specify disconnect, reconnect, zombie-client and timeout state transitions.
|
| 186 |
+
- [ ] PROV-119: Recover server browser, master registration and query protocols.
|
| 187 |
+
- [ ] PROV-120: Recover authentication packets, identities, permissions and deferred admission/drop behavior.
|
| 188 |
+
- [ ] PROV-121: Recover moderation, role announcements and failure/fallback policy.
|
| 189 |
+
- [ ] PROV-122: Recover download URLs, package negotiation, resume and integrity checks.
|
| 190 |
+
- [ ] PROV-123: Recover demo headers, message streams, playback clocks and compatibility rules.
|
| 191 |
+
- [ ] PROV-124: Recover demo seeking, interruption and malformed-demo handling.
|
| 192 |
+
- [ ] PROV-125: Identify voice, chat and radio network messages and recipient rules.
|
| 193 |
+
- [ ] PROV-126: Document LAN, IPv4, IPv6 and address parsing behavior where supported by evidence.
|
| 194 |
+
- [ ] PROV-127: Create protocol fixtures for every message family and edge case.
|
| 195 |
+
- [ ] PROV-128: Decide original-protocol compatibility versus a versioned replacement protocol with documented tradeoffs.
|
| 196 |
+
- [ ] PROV-129: Define local operation when external services are unavailable.
|
| 197 |
+
- [ ] PROV-130: Define authorization and transport requirements for any replacement external service.
|
| 198 |
+
|
| 199 |
+
### Movement, collision and combat
|
| 200 |
+
|
| 201 |
+
Use measured reference trajectories and events to turn static findings into a gameplay contract.
|
| 202 |
+
|
| 203 |
+
- [ ] PROV-131: Recover player hulls, stance transitions and collision masks.
|
| 204 |
+
- [ ] PROV-132: Recover walking, running, sprinting, acceleration, friction and stopping.
|
| 205 |
+
- [ ] PROV-133: Recover jumping, wall movement, ledge interactions and chained movement.
|
| 206 |
+
- [ ] PROV-134: Recover stamina, exhaustion, recovery and movement restrictions.
|
| 207 |
+
- [ ] PROV-135: Recover crouch, slide and stance-dependent speed or weapon restrictions.
|
| 208 |
+
- [ ] PROV-136: Recover gravity, slopes, stairs, clipping and grounded-state decisions.
|
| 209 |
+
- [ ] PROV-137: Recover water, ladder, trigger and environmental movement.
|
| 210 |
+
- [ ] PROV-138: Recover moving-platform interaction and collision with other players.
|
| 211 |
+
- [ ] PROV-139: Recover fall damage, impact response and landing effects.
|
| 212 |
+
- [ ] PROV-140: Recover view angles, angle quantization, recoil and camera behavior.
|
| 213 |
+
- [ ] PROV-141: Recover weapon definitions, inventory slots and gear restrictions.
|
| 214 |
+
- [ ] PROV-142: Recover selection, switching, raising, lowering and interrupted actions.
|
| 215 |
+
- [ ] PROV-143: Recover firing modes, burst cadence, ammunition and reload timing.
|
| 216 |
+
- [ ] PROV-144: Recover spread, random seeds, recoil accumulation and recovery.
|
| 217 |
+
- [ ] PROV-145: Recover hit traces, hit regions, penetration and material interactions.
|
| 218 |
+
- [ ] PROV-146: Recover projectile trajectories, bounce, fuse, explosion and ownership.
|
| 219 |
+
- [ ] PROV-147: Recover damage, armor, bleeding, healing and death attribution.
|
| 220 |
+
- [ ] PROV-148: Recover friendly fire, team damage and self-damage rules.
|
| 221 |
+
- [ ] PROV-149: Recover melee and special interactions discovered in game logic.
|
| 222 |
+
- [ ] PROV-150: Recover spawn protection, respawn, telefrag and loadout initialization.
|
| 223 |
+
- [ ] PROV-151: Recover animation/event synchronization for local and remote combat.
|
| 224 |
+
- [ ] PROV-152: Create boundary fixtures for simultaneous hits, death, reload, weapon change and tick transitions.
|
| 225 |
+
- [ ] PROV-153: Define acceptable numeric tolerances from reference measurements.
|
| 226 |
+
- [ ] PROV-154: Investigate cross-platform float and integer differences before fixing deterministic simulation policy.
|
| 227 |
+
|
| 228 |
+
### Entities, maps and game modes
|
| 229 |
+
|
| 230 |
+
Cover every supplied playable map and every discovered entity class; examples and unused variants still need documented dispositions.
|
| 231 |
+
|
| 232 |
+
- [ ] PROV-155: Recover map entity grammar, keys, defaults and parse errors.
|
| 233 |
+
- [ ] PROV-156: Recover spawn filters, mode flags, team restrictions and target linking.
|
| 234 |
+
- [ ] PROV-157: Recover movers, doors, buttons, platforms and timed entity thinks.
|
| 235 |
+
- [ ] PROV-158: Recover triggers, teleporters, hazards, breakables and usable objects.
|
| 236 |
+
- [ ] PROV-159: Recover item pickup, spawning, respawning and dropped-object behavior.
|
| 237 |
+
- [ ] PROV-160: Recover objective entities, ownership, activation and visibility rules.
|
| 238 |
+
- [ ] PROV-161: Recover map scripts, target chains and map-specific special behavior.
|
| 239 |
+
- [ ] PROV-162: Recover spawn-point choice, collision rejection and team balancing.
|
| 240 |
+
- [ ] PROV-163: Specify FFA scoring, match completion and respawn flow.
|
| 241 |
+
- [ ] PROV-164: Specify Last Man Standing round flow and elimination rules.
|
| 242 |
+
- [ ] PROV-165: Investigate the absent game-type ID 2 and unsupported or reserved mode handling.
|
| 243 |
+
- [ ] PROV-166: Specify Team Deathmatch scoring and team lifecycle.
|
| 244 |
+
- [ ] PROV-167: Specify Team Survivor rounds, readiness, elimination and tie resolution.
|
| 245 |
+
- [ ] PROV-168: Specify Follow the Leader selection, protection and victory conditions.
|
| 246 |
+
- [ ] PROV-169: Specify Capture and Hold objectives, timing and scoring.
|
| 247 |
+
- [ ] PROV-170: Specify Capture the Flag pickups, drops, returns and captures.
|
| 248 |
+
- [ ] PROV-171: Specify Bomb planting, defusing, timers and round outcomes.
|
| 249 |
+
- [ ] PROV-172: Specify Jump mode rules, timing, checkpoints and map metadata.
|
| 250 |
+
- [ ] PROV-173: Specify Freeze Tag freeze, thaw, elimination and round flow.
|
| 251 |
+
- [ ] PROV-174: Specify Gun Game progression, demotion and victory conditions.
|
| 252 |
+
- [ ] PROV-175: Specify instagib and other modifiers independently of base mode IDs.
|
| 253 |
+
- [ ] PROV-176: Specify warmup, ready state, intermission, overtime, timeouts and match restarts.
|
| 254 |
+
- [ ] PROV-177: Specify spectators, following, substitutes and team changes.
|
| 255 |
+
- [ ] PROV-178: Specify scoring, statistics, medals and end-of-match reporting.
|
| 256 |
+
- [ ] PROV-179: Specify votes, team votes, admin commands and permissions.
|
| 257 |
+
- [ ] PROV-180: Specify bot spawning, navigation, tactics and difficulty behavior.
|
| 258 |
+
- [ ] PROV-181: Create per-map entity, collision, lighting, objective and mode coverage records.
|
| 259 |
+
- [ ] PROV-182: Classify ut4_jumpents and other examples without assuming they are normal playable maps.
|
| 260 |
+
- [ ] PROV-183: Define the expected result for broken, unreachable or unused entity content.
|
| 261 |
+
- [ ] PROV-184: Create complete scenario matrices for every supported mode and supplied playable map.
|
| 262 |
+
|
| 263 |
+
### Client UI, input and audio behavior
|
| 264 |
+
|
| 265 |
+
Include the interactions around gameplay, not only the simulation.
|
| 266 |
+
|
| 267 |
+
- [ ] PROV-185: Recover startup screens, menu hierarchy and transitions.
|
| 268 |
+
- [ ] PROV-186: Recover server browser sorting, filtering, favorites and refresh behavior.
|
| 269 |
+
- [ ] PROV-187: Recover connect/download/loading progress and cancellation.
|
| 270 |
+
- [ ] PROV-188: Recover character, team, weapon and equipment selection flows.
|
| 271 |
+
- [ ] PROV-189: Recover HUD layout, scaling, colors, indicators and timers.
|
| 272 |
+
- [ ] PROV-190: Recover scoreboard, spectator overlays and match information.
|
| 273 |
+
- [ ] PROV-191: Recover console history, completion, scrolling and notifications.
|
| 274 |
+
- [ ] PROV-192: Recover chat, radio menus, message formatting and recipient feedback.
|
| 275 |
+
- [ ] PROV-193: Recover key bindings, mouse sensitivity, acceleration and controller-related paths if present.
|
| 276 |
+
- [ ] PROV-194: Recover focus loss, key repeat, text input and cursor capture.
|
| 277 |
+
- [ ] PROV-195: Recover localization, font fallback, text limits and encoding behavior.
|
| 278 |
+
- [ ] PROV-196: Recover audio event selection, spatialization, attenuation and channel priorities.
|
| 279 |
+
- [ ] PROV-197: Recover sound interruption, looping, music, volume and mute semantics.
|
| 280 |
+
- [ ] PROV-198: Recover accessibility-relevant visual/audio cues and current configuration behavior.
|
| 281 |
+
- [ ] PROV-199: Recover screenshot, demo recording and other user-facing utilities.
|
| 282 |
+
- [ ] PROV-200: Specify disconnected, unavailable-service and malformed-content error presentations.
|
| 283 |
+
- [ ] PROV-201: Create UI flow fixtures and reference captures for all menu states.
|
| 284 |
+
- [ ] PROV-202: Distinguish fidelity requirements from optional usability improvements in a decision log.
|
| 285 |
+
|
| 286 |
+
### Extraction, variants and conversion infrastructure
|
| 287 |
+
|
| 288 |
+
Keep original installation objects only in .cache. Preserve extracted variants under assets/extracted and converted products under clearly versioned asset paths.
|
| 289 |
+
|
| 290 |
+
- [ ] PROV-203: Revalidate all 23 PK3 manifests, occurrences, hashes and extraction safety guarantees.
|
| 291 |
+
- [ ] PROV-204: Verify extraction reproducibility from the original cache on a clean working directory.
|
| 292 |
+
- [ ] PROV-205: Audit path traversal, absolute paths, collisions and duplicate ZIP names.
|
| 293 |
+
- [ ] PROV-206: Record archive encoding, compression, CRC and damaged-member behavior.
|
| 294 |
+
- [ ] PROV-207: Build a format registry with strict parsers and explicit unsupported-format reports.
|
| 295 |
+
- [ ] PROV-208: Define stable source/member/content IDs for converted assets.
|
| 296 |
+
- [ ] PROV-209: Define a variant resolver only after runtime VFS precedence is established.
|
| 297 |
+
- [ ] PROV-210: Define conversion schemas, tool versions, settings and output manifests.
|
| 298 |
+
- [ ] PROV-211: Separate archival extraction, inspection products and runtime bundles.
|
| 299 |
+
- [ ] PROV-212: Add incremental conversion keyed by source hashes and settings.
|
| 300 |
+
- [ ] PROV-213: Add dependency tracking and invalidation for shared materials, models and maps.
|
| 301 |
+
- [ ] PROV-214: Provide dry-run, targeted conversion, full conversion and verification commands.
|
| 302 |
+
- [ ] PROV-215: Make conversion failures actionable with source identity and byte offsets.
|
| 303 |
+
- [ ] PROV-216: Preserve raw unknown subrecords and surplus bytes alongside interpreted data.
|
| 304 |
+
- [ ] PROV-217: Define archive/member provenance in every generated runtime asset.
|
| 305 |
+
- [ ] PROV-218: Detect missing references, cycles, case mismatches and cross-package dependencies.
|
| 306 |
+
- [ ] PROV-219: Provide content statistics, conversion coverage and semantic-loss reports.
|
| 307 |
+
- [ ] PROV-220: Verify parallel conversion produces deterministic output.
|
| 308 |
+
- [ ] PROV-221: Validate bundle schemas and checksums independently of the game runtime.
|
| 309 |
+
- [ ] PROV-222: Document fresh-checkout reconstruction and cache requirements.
|
| 310 |
+
|
| 311 |
+
### Textures, shaders, materials and fonts
|
| 312 |
+
|
| 313 |
+
Rendering conversion must retain the legacy semantics and document any approximation needed by Solari.
|
| 314 |
+
|
| 315 |
+
- [ ] PROV-223: Inventory every image format, dimensions, channels, alpha and color-space assumptions.
|
| 316 |
+
- [ ] PROV-224: Decode all texture variants without destructive overwriting.
|
| 317 |
+
- [ ] PROV-225: Recover texture coordinate orientation, wrapping and filtering behavior.
|
| 318 |
+
- [ ] PROV-226: Recover mip generation, compression, picmip and texture quality rules.
|
| 319 |
+
- [ ] PROV-227: Analyze alpha cutout thresholds, transparent edges and premultiplied-alpha assumptions.
|
| 320 |
+
- [ ] PROV-228: Classify diffuse, lightmap, normal-like, environment and UI imagery by actual use.
|
| 321 |
+
- [ ] PROV-229: Parse the complete shader-script grammar and preserve unknown directives.
|
| 322 |
+
- [ ] PROV-230: Recover shader lookup, duplicate definitions and missing-shader fallback behavior.
|
| 323 |
+
- [ ] PROV-231: Recover stage ordering, texture animation and blend functions.
|
| 324 |
+
- [ ] PROV-232: Recover alpha tests, depth writes/tests, culling and sorting.
|
| 325 |
+
- [ ] PROV-233: Recover tcGen, tcMod, rgbGen and alphaGen behavior.
|
| 326 |
+
- [ ] PROV-234: Recover vertex deformation, billboards, autosprites and wave functions.
|
| 327 |
+
- [ ] PROV-235: Recover sky, fog, portals, mirrors and environment mapping.
|
| 328 |
+
- [ ] PROV-236: Recover surface parameters that affect collision, footsteps, damage or gameplay.
|
| 329 |
+
- [ ] PROV-237: Recover lightmap, vertex lighting, dynamic light and fullbright interactions.
|
| 330 |
+
- [ ] PROV-238: Define a source-shader-to-runtime-material mapping with supported, approximated and unresolved fields.
|
| 331 |
+
- [ ] PROV-239: Document how multipass or nonphysical effects interact with Solari lighting.
|
| 332 |
+
- [ ] PROV-240: Convert font atlases and recover glyph metrics, kerning and text placement.
|
| 333 |
+
- [ ] PROV-241: Convert UI textures with reference pixel alignment and scaling checks.
|
| 334 |
+
- [ ] PROV-242: Build representative material scenes and compare all distinct shader feature combinations.
|
| 335 |
+
- [ ] PROV-243: Keep every original shader and texture variant traceable through the converted bundle.
|
| 336 |
+
- [ ] PROV-244: Generate a material compatibility report rather than silently dropping unsupported stages.
|
| 337 |
+
|
| 338 |
+
### Models, animation, maps and sound assets
|
| 339 |
+
|
| 340 |
+
Format names and variants must be confirmed from inventory signatures rather than presumed from extensions.
|
| 341 |
+
|
| 342 |
+
- [ ] PROV-245: Implement parsers for every discovered model format and version.
|
| 343 |
+
- [ ] PROV-246: Recover model coordinate systems, units, bounds and orientation.
|
| 344 |
+
- [ ] PROV-247: Recover surfaces, vertices, indices, normals, UVs and per-surface materials.
|
| 345 |
+
- [ ] PROV-248: Recover frame animation, skeletons, weights and compression where present.
|
| 346 |
+
- [ ] PROV-249: Recover tags, attachment transforms and weapon/character assembly.
|
| 347 |
+
- [ ] PROV-250: Recover animation configuration, frame ranges, looping and transition timing.
|
| 348 |
+
- [ ] PROV-251: Recover skins, body parts, team variants and customization references.
|
| 349 |
+
- [ ] PROV-252: Validate animation interpolation, bounds and normal reconstruction against reference output.
|
| 350 |
+
- [ ] PROV-253: Convert models into versioned runtime formats with preserved provenance.
|
| 351 |
+
- [ ] PROV-254: Implement parsers for every discovered BSP version and lump.
|
| 352 |
+
- [ ] PROV-255: Recover brush planes, solids, collision contents and trace rules.
|
| 353 |
+
- [ ] PROV-256: Recover world surfaces, triangle soups, patches and tessellation rules.
|
| 354 |
+
- [ ] PROV-257: Recover inline models, mover origins and transform conventions.
|
| 355 |
+
- [ ] PROV-258: Recover BSP tree, leaves, visibility clusters and area connectivity.
|
| 356 |
+
- [ ] PROV-259: Recover lightmaps, light grids, vertex colors and lighting metadata.
|
| 357 |
+
- [ ] PROV-260: Recover entity lumps and references to external assets.
|
| 358 |
+
- [ ] PROV-261: Recover sky, fog volumes, portals and map-specific rendering data.
|
| 359 |
+
- [ ] PROV-262: Investigate navigation files and bot authoring data separately from render geometry.
|
| 360 |
+
- [ ] PROV-263: Convert map visual, collision, visibility, entity and navigation products independently.
|
| 361 |
+
- [ ] PROV-264: Validate every map’s extents, scale, spawn positions and world orientation.
|
| 362 |
+
- [ ] PROV-265: Decode every audio format and preserve source variant identities.
|
| 363 |
+
- [ ] PROV-266: Recover sample rates, channels, loop points and codec metadata.
|
| 364 |
+
- [ ] PROV-267: Convert runtime audio with documented resampling and loudness decisions.
|
| 365 |
+
- [ ] PROV-268: Inventory music, voice, radio, ambient and effects categories and dependencies.
|
| 366 |
+
- [ ] PROV-269: Inspect auxiliary text, scripts, configs, thumbnails, icons and authoring files.
|
| 367 |
+
- [ ] PROV-270: Produce a final disposition and conversion result for every nonruntime auxiliary asset.
|
| 368 |
+
|
| 369 |
+
### Bevy and Solari feasibility and renderer
|
| 370 |
+
|
| 371 |
+
The target remains Rust + Bevy + Solari on macOS and Linux. Support is a research gate, not an assumed property of an unverified version or GPU.
|
| 372 |
+
|
| 373 |
+
- [ ] PROV-271: Verify current Bevy, Solari and wgpu requirements using pinned official sources before choosing versions.
|
| 374 |
+
- [ ] PROV-272: Build a minimal Solari executable on macOS and Linux using the intended toolchain.
|
| 375 |
+
- [ ] PROV-273: Measure required GPU features and limits on the intended macOS and Linux hardware.
|
| 376 |
+
- [ ] PROV-274: Record a support matrix for CPU architecture, GPU, driver, backend and operating system.
|
| 377 |
+
- [ ] PROV-275: Determine whether all target platforms can meet the Solari requirements; document blockers and a concrete decision gate.
|
| 378 |
+
- [ ] PROV-276: Define explicitly any approved renderer alternatives or target changes if feasibility fails; do not silently substitute them.
|
| 379 |
+
- [ ] PROV-277: Choose pinned dependency versions only after the feasibility experiment.
|
| 380 |
+
- [ ] PROV-278: Import a small real map section and one real animated model into the renderer.
|
| 381 |
+
- [ ] PROV-279: Validate geometry eligibility, material restrictions and acceleration structure behavior.
|
| 382 |
+
- [ ] PROV-280: Recover original renderer conventions for handedness, depth, projection and camera transforms.
|
| 383 |
+
- [ ] PROV-281: Define world chunking, mesh preparation and scene registration for Solari.
|
| 384 |
+
- [ ] PROV-282: Investigate animated meshes, dynamic movers, particles and geometry update costs.
|
| 385 |
+
- [ ] PROV-283: Map legacy lightmaps, emissive surfaces, dynamic lights and environment lighting into the chosen lighting model.
|
| 386 |
+
- [ ] PROV-284: Define treatment of transparency, alpha cutouts, fog, sky and special shader effects.
|
| 387 |
+
- [ ] PROV-285: Define viewmodel rendering, first-person depth and HUD compositing.
|
| 388 |
+
- [ ] PROV-286: Define shadow behavior and moving-object lighting requirements.
|
| 389 |
+
- [ ] PROV-287: Measure temporal history, disocclusion, motion and camera-cut artifacts.
|
| 390 |
+
- [ ] PROV-288: Test quality and noise under fast movement and gameplay-critical visibility.
|
| 391 |
+
- [ ] PROV-289: Define resolution scaling, anti-aliasing, post-processing and display color behavior.
|
| 392 |
+
- [ ] PROV-290: Measure frame pacing, pipeline compilation, loading stalls and memory use.
|
| 393 |
+
- [ ] PROV-291: Define GPU diagnostics, capability errors and device-loss recovery.
|
| 394 |
+
- [ ] PROV-292: Compare original and rewritten rendering with documented intentional differences.
|
| 395 |
+
- [ ] PROV-293: Establish acceptable visual and latency budgets from measured hardware results.
|
| 396 |
+
- [ ] PROV-294: Document renderer-specific conversion requirements and unsupported cases per asset.
|
| 397 |
+
|
| 398 |
+
### Rust architecture and implementation
|
| 399 |
+
|
| 400 |
+
Implementation follows recovered specifications and fixtures; crate boundaries remain provisional until a vertical slice tests them.
|
| 401 |
+
|
| 402 |
+
- [ ] PROV-295: Design crate boundaries for shared simulation, protocol, content, client, server and tools.
|
| 403 |
+
- [ ] PROV-296: Define stable gameplay/content IDs independent of Bevy entity identifiers.
|
| 404 |
+
- [ ] PROV-297: Define typed simulation state, events, commands and schema versioning.
|
| 405 |
+
- [ ] PROV-298: Separate authoritative simulation, client prediction, interpolation and presentation.
|
| 406 |
+
- [ ] PROV-299: Implement deterministic fixed-step scheduling with the recovered ordering contract.
|
| 407 |
+
- [ ] PROV-300: Implement bounded numeric conversions, RNG and timestamp arithmetic.
|
| 408 |
+
- [ ] PROV-301: Implement collision queries and player movement against converted maps.
|
| 409 |
+
- [ ] PROV-302: Implement weapons, damage, inventory and player lifecycle from reference fixtures.
|
| 410 |
+
- [ ] PROV-303: Implement entity registry, triggers, movers and target chains.
|
| 411 |
+
- [ ] PROV-304: Implement each game mode with shared and mode-specific state machines.
|
| 412 |
+
- [ ] PROV-305: Implement bots and navigation after their behavior and assets are specified.
|
| 413 |
+
- [ ] PROV-306: Implement dedicated-server startup, configuration and headless scheduling.
|
| 414 |
+
- [ ] PROV-307: Implement protocol transport, serialization, queues and resource limits.
|
| 415 |
+
- [ ] PROV-308: Implement connection state machine, snapshots and reliable commands.
|
| 416 |
+
- [ ] PROV-309: Implement prediction, reconciliation and remote interpolation.
|
| 417 |
+
- [ ] PROV-310: Implement demos, recording, playback and protocol-version policy.
|
| 418 |
+
- [ ] PROV-311: Implement client states for startup, import, menu, connect, load, play and errors.
|
| 419 |
+
- [ ] PROV-312: Implement asynchronous asset loading with dependency progress and cancellation.
|
| 420 |
+
- [ ] PROV-313: Implement Bevy input, window management, audio and UI integration.
|
| 421 |
+
- [ ] PROV-314: Implement console, cvars, commands, bindings and persistence.
|
| 422 |
+
- [ ] PROV-315: Implement server browser, chat, radio, scoreboard and loadout UI.
|
| 423 |
+
- [ ] PROV-316: Implement authentication/service interfaces and offline behavior from explicit policy.
|
| 424 |
+
- [ ] PROV-317: Implement admin, votes, readiness, timeouts and match administration.
|
| 425 |
+
- [ ] PROV-318: Implement structured diagnostics and errors with recovered recovery boundaries.
|
| 426 |
+
- [ ] PROV-319: Implement resource cleanup across reconnect, map restart, unload and shutdown.
|
| 427 |
+
- [ ] PROV-320: Keep any QVM interpreter isolated as a research tool rather than release gameplay.
|
| 428 |
+
- [ ] PROV-321: Provide version/content negotiation and clear incompatible-bundle errors.
|
| 429 |
+
- [ ] PROV-322: Create a runnable vertical slice before committing to the complete architecture.
|
| 430 |
+
- [ ] PROV-323: Eliminate original executable, QVM and DLL runtime dependencies from the finished rewrite.
|
| 431 |
+
- [ ] PROV-324: Document public interfaces, invariants and subsystem maintenance procedures.
|
| 432 |
+
|
| 433 |
+
### Platform delivery, performance and operations
|
| 434 |
+
|
| 435 |
+
Platform completion includes installation and operation, not only compilation.
|
| 436 |
+
|
| 437 |
+
- [ ] PROV-325: Define supported macOS and Linux releases and CPU architectures from measured feasibility.
|
| 438 |
+
- [ ] PROV-326: Validate Rust toolchain, compiler flags and native dependency requirements.
|
| 439 |
+
- [ ] PROV-327: Build client and dedicated server for each declared target.
|
| 440 |
+
- [ ] PROV-328: Validate macOS app bundles, resources, permissions and distribution requirements.
|
| 441 |
+
- [ ] PROV-329: Validate Linux packaging, launch integration and runtime library requirements.
|
| 442 |
+
- [ ] PROV-330: Test clean installation, first import, content verification and first launch.
|
| 443 |
+
- [ ] PROV-331: Test configuration paths, Unicode paths, permissions and read-only installations.
|
| 444 |
+
- [ ] PROV-332: Test display scaling, fullscreen, multiple monitors and focus changes.
|
| 445 |
+
- [ ] PROV-333: Test audio devices, hotplug and platform input behavior.
|
| 446 |
+
- [ ] PROV-334: Test offline play, LAN hosting, remote connections and server shutdown.
|
| 447 |
+
- [ ] PROV-335: Define server deployment, logs, monitoring and restart procedures.
|
| 448 |
+
- [ ] PROV-336: Profile simulation, networking, loading, render submission and GPU work.
|
| 449 |
+
- [ ] PROV-337: Set measurable CPU, GPU, memory, disk and bandwidth budgets.
|
| 450 |
+
- [ ] PROV-338: Investigate content streaming and memory eviction where measurements require it.
|
| 451 |
+
- [ ] PROV-339: Test sustained sessions, repeated map rotations and resource leaks.
|
| 452 |
+
- [ ] PROV-340: Test low-resource conditions, disk-full errors and unavailable devices.
|
| 453 |
+
- [ ] PROV-341: Document crash diagnostics and reproducible bug-report bundles.
|
| 454 |
+
- [ ] PROV-342: Validate upgrades, schema changes, cache invalidation and rollback behavior.
|
| 455 |
+
|
| 456 |
+
### Conformance, regression and completion gates
|
| 457 |
+
|
| 458 |
+
A completed parser, rendered map or passing synthetic branch test is evidence for that slice only.
|
| 459 |
+
|
| 460 |
+
- [ ] PROV-343: Define per-subsystem acceptance criteria before checking implementation tasks complete.
|
| 461 |
+
- [ ] PROV-344: Create golden movement traces for all stances and movement interactions.
|
| 462 |
+
- [ ] PROV-345: Create golden combat traces for every weapon and damage interaction.
|
| 463 |
+
- [ ] PROV-346: Create golden entity and objective traces for all discovered classes.
|
| 464 |
+
- [ ] PROV-347: Create complete lifecycle traces for all game modes.
|
| 465 |
+
- [ ] PROV-348: Create network fixtures for loss, duplication, reordering, jitter and sequence wrap.
|
| 466 |
+
- [ ] PROV-349: Create protocol rejection and malformed-content regression fixtures.
|
| 467 |
+
- [ ] PROV-350: Create visual comparisons for every material feature and representative scene.
|
| 468 |
+
- [ ] PROV-351: Create per-map collision, visibility, spawn and objective validation suites.
|
| 469 |
+
- [ ] PROV-352: Create UI navigation and input-binding regression scenarios.
|
| 470 |
+
- [ ] PROV-353: Create audio event and spatialization comparison scenarios.
|
| 471 |
+
- [ ] PROV-354: Separate exact binary/protocol checks from tolerant physics, visual and audio comparisons.
|
| 472 |
+
- [ ] PROV-355: Run relevant fixtures on every declared macOS/Linux architecture and GPU tier.
|
| 473 |
+
- [ ] PROV-356: Verify client/server parity with mixed-platform sessions.
|
| 474 |
+
- [ ] PROV-357: Verify prediction under latency and correction without relying on local-only tests.
|
| 475 |
+
- [ ] PROV-358: Verify bots, spectators, downloads, demos and administration in complete sessions.
|
| 476 |
+
- [ ] PROV-359: Verify deterministic conversion and reproducible runtime bundles.
|
| 477 |
+
- [ ] PROV-360: Validate all original file/member dispositions and remaining unknown regions.
|
| 478 |
+
- [ ] PROV-361: Maintain a deviation register with justification, evidence and user-approved product decisions where needed.
|
| 479 |
+
- [ ] PROV-362: Define a first vertical-slice gate: imported map, movement, one weapon, local server and measured Solari rendering.
|
| 480 |
+
- [ ] PROV-363: Define a multiplayer gate: remote transport, prediction, combat and lifecycle across both platforms.
|
| 481 |
+
- [ ] PROV-364: Define an all-content gate: every supported mode and supplied playable map has recorded acceptance evidence.
|
| 482 |
+
- [ ] PROV-365: Define a release gate: native installation, complete provenance, required services, performance and recovery checks pass.
|
| 483 |
+
- [ ] PROV-366: Reject final completion while required unknown behaviors, unsupported assets or target-platform blockers remain.
|
| 484 |
+
|
| 485 |
+
### Repository, distribution and ongoing planning
|
| 486 |
+
|
| 487 |
+
Use the single Hugging Face repository for code and assets. Original installation objects remain only in the ignored cache.
|
| 488 |
+
|
| 489 |
+
- [ ] PROV-367: Audit attributes so code/docs remain normal Git and assets remain LFS/Xet pointers.
|
| 490 |
+
- [ ] PROV-368: Verify original hashes cannot enter ordinary Git blobs, asset pointers or pushed history.
|
| 491 |
+
- [ ] PROV-369: Verify extracted and converted assets are clearly separated from original installation files.
|
| 492 |
+
- [ ] PROV-370: Test the storage hooks on a clean clone with missing setup and malformed pointers.
|
| 493 |
+
- [ ] PROV-371: Verify asset upload and download integrity through the configured Hugging Face remote.
|
| 494 |
+
- [ ] PROV-372: Document recovery from interrupted uploads and unavailable remote storage.
|
| 495 |
+
- [ ] PROV-373: Keep bulk analysis artifacts in assets and compact evidence/index documents in normal Git.
|
| 496 |
+
- [ ] PROV-374: Record licensing and provenance for every dependency and content category.
|
| 497 |
+
- [ ] PROV-375: Determine redistribution rights and requirements before assembling public runtime bundles.
|
| 498 |
+
- [ ] PROV-376: Define code, asset and research artifact release versioning.
|
| 499 |
+
- [ ] PROV-377: Document build, import, conversion, research and gameplay reproduction commands.
|
| 500 |
+
- [ ] PROV-378: Maintain CI for relevant script checks, Rust validation and storage-policy enforcement.
|
| 501 |
+
- [ ] PROV-379: Provide contributor instructions for evidence claims and checklist completion.
|
| 502 |
+
- [ ] PROV-380: Convert selected PROV tasks into canonical RE/AP/RW/QA/MAP/FILE tasks without losing cross-links.
|
| 503 |
+
- [ ] PROV-381: Review the provisional backlog after each research batch and split tasks revealed to contain independent unknowns.
|
| 504 |
+
- [ ] PROV-382: Keep IDs stable; retire obsolete tasks with reasons and replacement links rather than renumbering.
|
| 505 |
+
- [ ] PROV-383: Record unresolved decisions on protocol compatibility, service replacement, visual fidelity and target hardware.
|
| 506 |
+
- [ ] PROV-384: Publish milestone evidence and an honest remaining-work summary with each meaningful release.
|
| 507 |
+
|
| 508 |
+
## Maintenance and next selection
|
| 509 |
+
|
| 510 |
+
This revision contains **384 provisional tasks**. Select a few bounded items at a time, prioritizing the first research batch and the renderer/platform feasibility experiments. Selection does not waive the remaining scope. Update findings only when new evidence exists; this document adds planning detail, not new reverse-engineering conclusions.
|
| 511 |
+
|
| 512 |
+
Before marking a broad subsystem complete, reconcile it with the canonical checklist, the per-file coverage registry, variant conversion reports, runtime fixtures and the deviation register. Keep unfinished and blocked work visible with the specific missing evidence or dependency.
|
docs/README.md
CHANGED
|
@@ -19,10 +19,11 @@ The objective is to reverse engineer and document the supplied game, then rewrit
|
|
| 19 |
11. [Git/Xet storage setup](STORAGE.md): one Hugging Face repository, ordinary Git code, Xet assets, and pointer/history validation.
|
| 20 |
|
| 21 |
12. [QVM/native binary analysis](research/README.md): full static decoding/disassembly, entry/ABI evidence, libraries/DLLs and remaining uncertainties.
|
|
|
|
| 22 |
|
| 23 |
## How to use the checklist
|
| 24 |
|
| 25 |
-
Task prefixes are `RE` (research), `AP` (asset pipeline), `RW` (rewrite), `QA` (validation), `MAP` (map completion), and `FILE` (installation file coverage). IDs are stable references for issues and evidence. Tasks stay unchecked until their deliverables exist and their verification is recorded. A section applies to **every applicable item in the inventory**, rather than only a representative example. Newly discovered features receive new tasks and evidence records.
|
| 26 |
|
| 27 |
Research produces specifications and reference fixtures; conversion produces versioned assets and reports; implementation consumes both. Each subsystem follows that cycle. The milestones stage the work, but the full completion target includes every supported game mode and all supplied playable maps, with explicit treatment of unused, broken, or example content.
|
| 28 |
|
|
|
|
| 19 |
11. [Git/Xet storage setup](STORAGE.md): one Hugging Face repository, ordinary Git code, Xet assets, and pointer/history validation.
|
| 20 |
|
| 21 |
12. [QVM/native binary analysis](research/README.md): full static decoding/disassembly, entry/ABI evidence, libraries/DLLs and remaining uncertainties.
|
| 22 |
+
13. [Large provisional backlog](PROVISIONAL_TODO.md): expanded remaining work, immediate research priorities, platform feasibility and whole-game completion gates.
|
| 23 |
|
| 24 |
## How to use the checklist
|
| 25 |
|
| 26 |
+
The provisional backlog uses separate `PROV` IDs and does not change canonical completion status. Task prefixes are `RE` (research), `AP` (asset pipeline), `RW` (rewrite), `QA` (validation), `MAP` (map completion), and `FILE` (installation file coverage). IDs are stable references for issues and evidence. Tasks stay unchecked until their deliverables exist and their verification is recorded. A section applies to **every applicable item in the inventory**, rather than only a representative example. Newly discovered features receive new tasks and evidence records.
|
| 27 |
|
| 28 |
Research produces specifications and reference fixtures; conversion produces versioned assets and reports; implementation consumes both. Each subsystem follows that cycle. The milestones stage the work, but the full completion target includes every supported game mode and all supplied playable maps, with explicit treatment of unused, broken, or example content.
|
| 29 |
|