docs: align renderer and evidence status
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Original Engine Hashes
|
||||
|
||||
Страница фиксирует минимальный статический baseline, на который должны
|
||||
ссылаться capture fixtures и Stage 4 evidence.
|
||||
|
||||
## Scope
|
||||
|
||||
- Источник: локальная статическая сверка Part 1 (`IS`) и Part 2 (`IS2`).
|
||||
- Метод: SHA-256, export/import tables, `objdump -p`, `strings`.
|
||||
- Эта страница не заменяет динамические traces: она задаёт only-if-match
|
||||
binary baseline для дальнейших runtime captures.
|
||||
|
||||
## Stable binaries across Part 1 / Part 2
|
||||
|
||||
| Binary | SHA-256 | Size | Notes |
|
||||
| --- | --- | ---: | --- |
|
||||
| `Ngi32.dll` | `bab9840d94f4e4e74ffc26677724fa896cf4823845504d09a9e025f80016edf5` | 253952 | Shared low-level render/resource/audio boundary |
|
||||
| `World3D.dll` | `17e4a3089b2583a8cf2356c9db0390b1aba138356a09130d79b4e7e4791da61e` | 208896 | Shared gameplay/world/render lifecycle baseline |
|
||||
| `Terrain.dll` | `6d3e68f0e15b297f6c184af3113baf1f31e19c3326c18f0150dec659242ed667` | 708608 | Shared terrain/shade/world baseline |
|
||||
| `iron_3d.exe` / `iron_3d_p2.exe` | `f476af85c034a4b4f34f49d0806e4dff397b5da0ee26d382a7674231144979f7` | 36864 | Shared launcher binary |
|
||||
|
||||
## Divergent binaries across Part 1 / Part 2
|
||||
|
||||
Эти модули нельзя автоматически считать behavior-compatible между частями:
|
||||
|
||||
- `AniMesh.dll`
|
||||
- `Effect.dll`
|
||||
- `iron3d.dll`
|
||||
- `services.dll`
|
||||
- `Control.dll`
|
||||
- `ArealMap.dll`
|
||||
|
||||
## Practical use
|
||||
|
||||
1. Frame-order traces для `World3D.dll`, `Terrain.dll` и `Ngi32.dll` можно
|
||||
привязывать к shared profile, пока hash совпадает.
|
||||
2. Animation and FX captures обязаны храниться раздельно для Part 1 и Part 2,
|
||||
потому что `AniMesh.dll` и `Effect.dll` отличаются.
|
||||
3. Любой runtime fixture должен записывать минимум:
|
||||
- `game_part`
|
||||
- `module_name`
|
||||
- `module_sha256`
|
||||
- `mission`
|
||||
- `frame_or_tick`
|
||||
- `schema_version`
|
||||
|
||||
## Export / import focus for Stage 4
|
||||
|
||||
- `World3D.dll`: `stdCalculateGame`, `stdRenderGame`, `sendEndOfRender`
|
||||
- `Terrain.dll`: `GetShade`, `GetWorld`, `stdSetCurrentCamera2`
|
||||
- `AniMesh.dll`: `LoadAgent`, `LoadAniMesh`
|
||||
- `Effect.dll`: `CreateFxManager`, `InitializeSettings`
|
||||
- `Ngi32.dll`: `niGet3DRender`, `n3dPrimitive`, `n3dEndScene`, `rsLoadTexture`, `rsLoadMultiTexture`
|
||||
|
||||
Если будущий capture fixture не указывает, к какому hash он относится, такой
|
||||
fixture нельзя считать acceptance evidence.
|
||||
@@ -0,0 +1,107 @@
|
||||
# Stage 4 Capture Schema
|
||||
|
||||
Stage 4 нельзя закрывать набором ad-hoc логов. Нужна схема, по которой
|
||||
animation, FX и rendered frame captures сравниваются между Part 1, Part 2 и
|
||||
современной реализацией.
|
||||
|
||||
## Goals
|
||||
|
||||
- сделать captures пригодными для автоматического diff;
|
||||
- не хранить host-specific пути, временные каталоги и нестабильные handles;
|
||||
- связывать frame traces, command captures и pixel artifacts общим identity.
|
||||
|
||||
## Common envelope
|
||||
|
||||
```json
|
||||
{
|
||||
"schema_version": "fparkan-stage4-capture-v1",
|
||||
"capture_kind": "frame-trace | animation-pose | fx-lifecycle | render-frame",
|
||||
"game_part": "part1 | part2",
|
||||
"mission": "MISSIONS/.../data.tma",
|
||||
"frame_id": 123,
|
||||
"tick": 123,
|
||||
"module_hashes": {
|
||||
"World3D.dll": "sha256...",
|
||||
"Terrain.dll": "sha256...",
|
||||
"AniMesh.dll": "sha256...",
|
||||
"Effect.dll": "sha256..."
|
||||
},
|
||||
"tool_version": "codex/manual/fixture version",
|
||||
"notes": []
|
||||
}
|
||||
```
|
||||
|
||||
## Capture kinds
|
||||
|
||||
### `frame-trace`
|
||||
|
||||
Используется для порядка фаз и внешних вызовов.
|
||||
|
||||
Required fields:
|
||||
|
||||
- `events`: ordered list of `{ phase, symbol, sequence, object_id?, fx_id?, camera_id? }`
|
||||
- `queue_counters`: deferred operations, visible objects, emitted FX, UI callbacks
|
||||
- `rng_state`: optional, if recoverable
|
||||
|
||||
### `animation-pose`
|
||||
|
||||
Используется для x87 / portable sampler parity.
|
||||
|
||||
Required fields:
|
||||
|
||||
- `clip_id`
|
||||
- `node_index`
|
||||
- `sample_time`
|
||||
- `numeric_profile`
|
||||
- `translation`
|
||||
- `rotation_quat`
|
||||
- `scale`
|
||||
- `matrix_hash`
|
||||
|
||||
### `fx-lifecycle`
|
||||
|
||||
Используется для create/update/emit/stop parity.
|
||||
|
||||
Required fields:
|
||||
|
||||
- `fx_id`
|
||||
- `instance_id`
|
||||
- `time`
|
||||
- `opcode_events`
|
||||
- `rng_calls`
|
||||
- `resource_refs`
|
||||
- `emissions`
|
||||
|
||||
### `render-frame`
|
||||
|
||||
Связывает backend-neutral snapshot с live Vulkan output.
|
||||
|
||||
Required fields:
|
||||
|
||||
- `camera`
|
||||
- `visible_object_ids`
|
||||
- `draws`
|
||||
- `pipeline_keys`
|
||||
- `resource_ids`
|
||||
- `validation`
|
||||
- `pixel_artifact`
|
||||
|
||||
## Stability rules
|
||||
|
||||
1. Не записывать абсолютные host paths.
|
||||
2. Не записывать raw pointer addresses как identity fields.
|
||||
3. `frame_id` должен совпадать между trace, command capture и pixel artifact.
|
||||
4. GPU-specific transient handles допустимы только внутри diagnostics fields и
|
||||
не участвуют в canonical equality.
|
||||
5. Любой capture without `module_hashes` считается informational, а не
|
||||
acceptance-grade.
|
||||
|
||||
## Acceptance mapping
|
||||
|
||||
- `S4-TRACE-*` rows читают `frame-trace`
|
||||
- `S4-ANIM-*` rows читают `animation-pose`
|
||||
- `S4-FX-*` rows читают `fx-lifecycle`
|
||||
- `S4-VK-*` и `S4-PIXEL-*` rows читают `render-frame`
|
||||
|
||||
Эта схема intentionally минимальна. Новые поля можно добавлять, но нельзя
|
||||
ломать перечисленные identity and parity anchors без смены `schema_version`.
|
||||
Reference in New Issue
Block a user