77 lines
2.8 KiB
Markdown
77 lines
2.8 KiB
Markdown
# Blender Web Unattended Tools
|
|
|
|
`my-tools` is the project-local launcher and observability layer for the
|
|
Blender 5.2 Web/WASM capability workflow. The repository's Node tools remain
|
|
authoritative for queue ownership, source mapping, Chromium evidence, handoff,
|
|
commit and push.
|
|
|
|
## Entrypoints
|
|
|
|
- `run_blender_web_scheduler.py`: foreground wrapper around
|
|
`tools/web/run-wbv2-scheduler.mjs`.
|
|
- `watch_blender_web_scheduler.py`: single-instance watchdog; it only restarts
|
|
a missing scheduler and stops on a terminal or blocked checkpoint.
|
|
- `show_blender_web_scheduler.py`: delegates live RUNNING/IDLE/BLOCKED state to
|
|
`tools/web/print-wbv2-live-status.mjs`.
|
|
- `validate_incremental_context.py`: validates only the active batch metadata;
|
|
unchanged inputs return `incremental-context-ok ... context=REUSED`.
|
|
- `start_unattended.sh`: launches the scheduler and watchdog with `nohup` and
|
|
`setsid` for process-level continuity.
|
|
- `check_continuation_state.py` and `validate_web_context.py`: read-only WBV2
|
|
context and governance gates.
|
|
- `prepare_web_task_context.py`: writes the canonical
|
|
`tests/golden/<task>/task-context.json` through the repository checker.
|
|
|
|
All scripts and reference documents use Blender terminology and paths.
|
|
|
|
## Start
|
|
|
|
From the repository root:
|
|
|
|
```sh
|
|
chmod +x my-tools/start_unattended.sh
|
|
my-tools/start_unattended.sh
|
|
python3 my-tools/show_blender_web_scheduler.py
|
|
```
|
|
|
|
Equivalent foreground command:
|
|
|
|
```sh
|
|
python3 my-tools/run_blender_web_scheduler.py --max-iterations 0 --commit --push
|
|
```
|
|
|
|
The scheduler reads `docs/EXECUTION_QUEUE.md`, runs the current authorized
|
|
`nextTask` through the native Blender/WASM production path, and writes all
|
|
receipts and checkpoints under `tests/golden/WBV2`. It does not fabricate a
|
|
task, bypass a blocked checkpoint, or replay a terminal task.
|
|
|
|
## Runtime State
|
|
|
|
```text
|
|
tests/golden/WBV2/continuous-scheduler.json
|
|
tests/golden/WBV2/continuous-scheduler.log
|
|
tests/golden/WBV2/continuous-guardian.json
|
|
tests/golden/WBV2/continuous-supervisor.json
|
|
tests/golden/WBV2/my-tools-scheduler.json
|
|
tests/golden/WBV2/my-tools-watchdog.json
|
|
```
|
|
|
|
For machine-readable live state:
|
|
|
|
```sh
|
|
python3 my-tools/show_blender_web_scheduler.py --json
|
|
```
|
|
|
|
Implementation cycles use a bounded fast path: each module manifest carries a
|
|
stable `batchId` and selected record IDs, context metadata compares
|
|
`bytes`/`mtime_ns` before hashing, and the outer scheduler owns planner and
|
|
continuation rotation. Full API, format, Chromium, performance and release
|
|
gates remain an explicit final-audit operation.
|
|
|
|
`--commit --push` is enabled by the launcher and can be disabled for a local
|
|
dry run with `WBV2_AUTO_COMMIT=0 WBV2_AUTO_PUSH=0`.
|
|
|
|
On Linux, the launcher uses `/dev/shm/blender-wasm-<uid>` for Emscripten and
|
|
temporary compiler caches. CPU compilation remains capped at the repository's
|
|
required `-j8`; Chromium evidence stays single-worker for determinism.
|