49 lines
2.8 KiB
Markdown
49 lines
2.8 KiB
Markdown
# M11-06 Status
|
|
|
|
status: done
|
|
task: server render job provenance binding
|
|
updated: 2026-08-17 America/New_York
|
|
|
|
## Scope
|
|
|
|
`web/protocol/server-render-job.ts` defines schema 1 for a server render request and
|
|
result. A request is accepted only when the uploaded `.blend` bytes match its declared
|
|
source SHA-256 and byte length, the Blender build is a declared 5.2 build with a
|
|
content hash, and canonical bounded render settings match `settingsSha256`. The
|
|
request itself is bound by `requestSha256`.
|
|
|
|
A successful result carries the same source/revision/build/settings identity and adds
|
|
output MIME, byte length, and output SHA-256, plus `resultSha256`. Consumers recalculate
|
|
the output hash before accepting pixels. The contract does not claim a remote queue,
|
|
progress, cancellation, denoise, or Freestyle implementation; those remain later
|
|
M11 tasks.
|
|
|
|
## Evidence
|
|
|
|
- `npm --prefix web run test:server-render-job`: unit 3/3 and a real loopback server
|
|
check passed.
|
|
- The check used Blender 5.2.0 headless to open
|
|
`tests/files/web/m11_render_reference.blend` and render a PNG from the submitted
|
|
source bytes. It verified source/build/settings/output hashes and rejected source,
|
|
build, settings, and output tampering.
|
|
- Result: `server-render-job-ok blender=5.2.0 source=d2bea55fe4de0b00e73a9241b4d1b0c802c2eb0e6159c0cd48e007b97b9d3963 settings=97bb832618bd27e8763722afa0d250ef74383fb355f0ff38763930f57ba1590b output=564b95cd501da2636085aeada88814c4a3b7af7b1f0188543a1863fe34dd091e bytes=3915 source-hash=1 build-hash=1 settings-hash=1 output-hash=1 tamper=4`.
|
|
- Full regression passed: typecheck, lint, Node `168/168`, status consistency
|
|
(`12` parity blocked, `0` release blocked), release evidence (`17` records,
|
|
`0` missing), production build (`75` modules), and `git diff --check`.
|
|
|
|
## Implementation Hashes
|
|
|
|
- `web/protocol/server-render-job.ts`: `e2b5b95032b0dbcb346aa35d1a10a3b55d6c006603f16b9e72c3de45763906c5`
|
|
- `web/protocol/error.ts`: `747ea52fd96b3ec7ede9ce72c15f56fdc454836ba5bf924cc60198096d4986de`
|
|
- `web/tests/unit/server-render-job.test.mjs`: `c84f86365006360f146601839d7e1394f3f7bc7fa71dcbf62d8d4e4321cdd16d`
|
|
- `tools/web/check-server-render-job.mjs`: `6dd49fbd1be202a88fa714b2fb81305018da6df5f9d73c95e048e3697742764e`
|
|
- `tools/web/render-server-job.py`: `48950b0884a52a40ae234f8bbe590a0cb89e58c4d2a2de40ea638f491d111aff`
|
|
- `tests/golden/M11-06/server-render-job.json`: `36f083f8da7585f850e748e6ac78fc57cd6e8d59bce03d77eee3acd2fa042ae7`
|
|
- `web/package.json`: `628191a76c7614393a74969bd000faa8a6302d887265d13a1ad49dcfc401c2fc`
|
|
|
|
## Rollback
|
|
|
|
Remove the server-render-job protocol, error codes, unit/check commands, and this status
|
|
record; restore M11 to 5/14 and remove the M11-06 completed slice. Keep M11-05 routing,
|
|
M11-04 reference metrics, and all earlier lighting/resource behavior unchanged.
|