@punal_manalan/blender-project-harness 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "blender-workflow-harness",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "blender-workflow-harness",
9
- "version": "1.0.1",
9
+ "version": "1.0.2",
10
10
  "dependencies": {
11
11
  "@modelcontextprotocol/sdk": "1.29.0",
12
12
  "zod": "3.25.76"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blender-workflow-harness",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": { "node": ">=22" },
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.2
4
+
5
+ - Rebuild the npm package so the published README matches the repository README.
6
+ - No runtime changes.
7
+
3
8
  ## 1.0.1
4
9
 
5
10
  - Publish the package as `@punal_manalan/blender-project-harness`.
package/README.md CHANGED
@@ -1,282 +1,369 @@
1
- # Blender Project Workspace
2
-
3
- This workspace takes you from an idea to a finished, reviewed Blender project. Kilo and the MCP for
4
- Blender addon handle the building, inspection, grading, and records, while a guarded harness keeps
5
- edits bounded and the project history clean.
6
-
7
- Each project lives in its own folder under `Blender/<ProjectName>/`. The harness and checks live in
8
- `.kilo/blender-project-harness/tools/`, with configuration at
9
- `.kilo/blender-project-harness/config.json`. `AGENTS.md` contains the internal agent contract; this
10
- README is the human setup and usage guide.
11
-
12
- ## What the workspace provides
13
-
14
- - Requirements confirmation, project registration, and an active production goal.
15
- - One guarded Blender instance per workspace and one writer at a time.
16
- - Bounded scene changes with exact object names, paths, and declared scenes.
17
- - Worker-executed apply tickets, WIP renders, and inspected review evidence.
18
- - Independent visual, technical, and spec graders with primary and backup models.
19
- - Scoped project commits, review records, checkpoints, and completion checks.
20
- - Guarded intake for references, models, textures, HDRIs, audio, and source-only scripts.
21
- - Strict asset checks, relative paths, licence records, and verified export receipts.
22
- - Optional multi-scene projects, master Video Sequencer scenes, and media generation through the
23
- configured Media MCP when you approve the credits.
24
-
25
- ## Quick Start
26
-
27
- 1. **Git** — install from [git-scm.com/download/win](https://git-scm.com/download/win).
28
- 2. **Blender** — install the current stable or LTS Windows build from
29
- [blender.org/download](https://www.blender.org/download/), using the Windows installer. Blender
30
- 5.2 is the current tested baseline; the MCP addon requires Blender 3.0 or newer.
31
- 3. **Node.js and npm** — install the current LTS Windows installer from
32
- [nodejs.org/download](https://nodejs.org/en/download). This repository requires Node.js 22 or
33
- newer; npm comes bundled with Node.js.
34
- 4. **uv and uvx** — install them with the Windows package manager:
35
-
36
- ```powershell
37
- winget install --id=astral-sh.uv -e
38
- ```
39
-
40
- Close and reopen PowerShell afterwards, then check that everything is on your PATH:
41
-
42
- ```powershell
43
- git --version
44
- node --version
45
- npm --version
46
- uvx --version
47
- ```
48
-
49
- 5. **Kilo** — pick whichever client you prefer:
50
-
51
- - Install [VS Code](https://code.visualstudio.com/download), then add the **Kilo Code**
52
- extension from [kilo.ai/install](https://kilo.ai/install).
53
- - Or install the CLI from PowerShell:
54
-
55
- ```powershell
56
- npm install -g @kilocode/cli
57
- kilo --version
58
- ```
59
-
60
- Sign in or connect a model provider through Kilo. Keep provider credentials in Kilo's own user
61
- configuration — never in this repository.
62
-
63
- ## Install with npm
64
-
65
- In an existing Kilo workspace, install the harness without cloning this repository:
66
-
67
- ```powershell
68
- npx @punal_manalan/blender-project-harness@latest install
69
- ```
70
-
71
- The installer:
72
-
73
- - copies the harness into `.kilo/blender-project-harness/tools/`;
74
- - writes `VERSION`, `install.json`, `config.json`, and a copy of the package `AGENTS.md` in
75
- `.kilo/blender-project-harness/`;
76
- - installs the harness dependencies with `npm ci`;
77
- - updates `.kilo/kilo.jsonc` and `.kilo/plugins/blender-workflow.js`;
78
- - adds missing workspace files such as `AGENTS.md`, `.kilo/skills/`, `.kilo/agent/`, and
79
- `Blender/README.md`;
80
- - adds the local config and backups to `.gitignore`.
81
-
82
- Run the same command to update. The previous installation is moved to
83
- `.temp/blender-project-harness-backups/<version>-<timestamp>/` before the new version is installed.
84
- Edit worker and grader models in `.kilo/blender-project-harness/config.json`. That config is
85
- preserved across updates; use `--reset-config` to replace it with the package example. The package's
86
- current `AGENTS.md` is always available at `.kilo/blender-project-harness/AGENTS.md`; the root
87
- `AGENTS.md` is only installed when missing and is never overwritten.
88
-
89
- Useful installer commands:
90
-
91
- ```powershell
92
- npx @punal_manalan/blender-project-harness@latest status
93
- npx @punal_manalan/blender-project-harness@latest doctor
94
- npx @punal_manalan/blender-project-harness@latest install --dry-run
95
- npx @punal_manalan/blender-project-harness@latest install --skip-deps
96
- ```
97
-
98
- Use `--root <path>` when the workspace root is not the current directory. The installer requires
99
- Node.js 22 or newer and npm. Blender, uvx, and the MCP addon are still installed separately.
100
-
101
- ## Work from a clone
102
-
103
- The repository clone is the development source and the full workspace template. Clone it, open
104
- PowerShell in its root, and install the locked local Node dependencies:
105
-
106
- ```powershell
107
- git clone <repository-url>
108
- Set-Location <repository-folder>
109
- npm ci --prefix .kilo/blender-project-harness/tools/harness
110
- npm run doctor --prefix .kilo/blender-project-harness/tools/harness
111
- ```
112
-
113
- The doctor command checks Node.js, the npm-installed harness packages, Git, uvx, the workspace
114
- config, the pinned `mcp-for-blender==2.2.6`, and the running Blender instance state. It does not open
115
- Blender.
116
-
117
- ## Add MCP for Blender to Blender
118
-
119
- Install the addon into Blender:
120
-
121
- ```powershell
122
- uvx --from mcp-for-blender==2.2.6 mcp-for-blender install-addon
123
- ```
124
-
125
- Open Blender and enable **Interface: MCP for Blender** under **Edit > Preferences > Add-ons**
126
- (search for `MCP for Blender`). Restart Blender once it is enabled.
127
-
128
- This workspace routes MCP through `.kilo/kilo.jsonc`, which sets `BLENDER_PORT` (default `9877`).
129
- The harness and the addon both use that value, so you can change it to any free port as long as it
130
- stays in one place. Do not create a project-local Kilo config or run a second MCP server. If you
131
- installed `uvx` or the addon while Kilo was open, fully reload Kilo so it picks up the new PATH and
132
- workspace configuration.
133
-
134
- ## Start building
135
-
136
- Open this repository in Kilo and reload the workspace after the dependencies are installed. Then
137
- describe what you want to make. The more you share up front — subject, style, key objects, camera and
138
- lighting preferences, dimensions, required deliverables, and whether external files or paid media
139
- generation are allowed — the fewer follow-up questions you will get.
140
-
141
- For example:
142
-
143
- ```text
144
- Create a small cozy retro computer room. Use warm lamp light, a cool window accent, a desk with a
145
- CRT monitor, keyboard, mug, chair, rug, and wall decor. Make one hero camera view and save the scene
146
- inside a new Blender project.
147
- ```
148
-
149
- The agent then follows the harness flow:
150
-
151
- 1. Confirms requirements and asks for the workflow mode: **Fully Autonomous** or **Partially
152
- Autonomous**.
153
- 2. Asks for the review mode: **Off**, **Single**, or **All**.
154
- 3. Scaffolds the project, fills its records, registers it, and starts the goal.
155
- 4. Launches Blender through the harness and saves the bootstrap scene.
156
- 5. Builds the project in bounded changes using worker apply tickets.
157
- 6. Renders and inspects WIP evidence, then seals a review round.
158
- 7. Dispatches the configured graders and aggregates their reports.
159
- 8. Commits the scoped change, checkpoints the project, and reports the result.
160
-
161
- The agent owns goals and project records end to end, so you can stay in plain language. You provide
162
- requirements, answers, feedback, and approvals through the conversation.
163
-
164
- ## Files, assets, and media
165
-
166
- - Put user-supplied files wherever you like and give the agent their paths. The harness
167
- `intake` action copies them into canonical project paths without moving or deleting the originals.
168
- You do not need to create project folders or rename files.
169
- - `download` can stage a public HTTPS asset into ignored staging. The agent still has to inspect it,
170
- provide source and licence metadata, and run `intake` before using it.
171
- - Generated references and images go through the configured Media MCP only with your permission.
172
- The agent saves the actual file, records provenance, shows it to you, and asks before using it as a
173
- texture or reference.
174
- - External assets require `SOURCE.md` and `LICENSE.txt` beside them. Non-redistributable binaries
175
- stay out of Git; their metadata and acquisition details are recorded instead.
176
- - Project scripts under `scripts/` are source-only. The harness never executes project Python.
177
- - Every produced export needs a verified receipt with format, path, bytes, SHA-256, source scene, and
178
- signature. A missing or changed export blocks completion.
179
-
180
- ## Review and completion
181
-
182
- - **Off** uses self-review only. **Single** uses one configured grader. **All** uses every configured
183
- grader, up to `max_parallel`.
184
- - **Fully Autonomous** proceeds through reviewable changes; **Partially Autonomous** requires your
185
- approval before each reviewable change commits.
186
- - Every worker and grader has a primary model and a backup model with a reasoning variant. A missing
187
- or disabled grader is a tooling failure, not a silent pass.
188
- - A review round seals the saved scene, per-scene renders, camera evidence, scene facts, manifest,
189
- evidence key, and review folder. The sealed render must be inspected before review.
190
- - Technical evidence includes object dimensions and topology, not just names and types.
191
- - When assets are used, a strict `check_assets` run must leave a receipt on the final unchanged
192
- scene, and the sealed manifest must include it.
193
- - A design review can end in `PASS` or `CHANGES_REQUIRED`; missing evidence or tooling problems end
194
- in `BLOCKED`. A blocked round is preserved and checkpointed, never downgraded to a pass.
195
- - Completion requires the final full-spec pass, a clean checkpoint, current documents, a complete
196
- goal, and a completed task tracker. Blender is stopped unless you ask to leave it open for
197
- inspection.
198
-
199
- ## House rules
200
-
201
- - Keep every Blender project under `Blender/<ProjectName>/`.
202
- - Let the agent launch and stop Blender through `blender_workflow`; do not run `blender.exe` or any
203
- legacy script directly for workspace work.
204
- - Project documents and project commits go through the harness; manual project Git commits are
205
- blocked.
206
- - Requirements, workflow, review, and goal records are frozen after registration. Changing them
207
- requires an explicit re-registration, not a normal edit.
208
- - Read-only shell inspection is allowed. Other non-project shell commands require a reasoned,
209
- two-step approval committed under the project's `Documents/Commands/` or the root `Commands/`.
210
- - Run only one Blender instance from this workspace at a time.
211
- - Keep credentials, local model settings, logs, caches, backups, and temporary renders out of Git.
212
- - Use relative paths inside Blender projects so scenes stay portable.
213
- - Do not edit the harness-owned task tracker or task records by hand.
214
- - Check each project's `README.md` and `Documents/` for its own requirements and deliverables.
215
-
216
- ## Useful checks and fixes
217
-
218
- Run these from the workspace root when something looks off, or when you are contributing to the
219
- tooling:
220
-
221
- ```powershell
222
- npx @punal_manalan/blender-project-harness@latest status
223
- npx @punal_manalan/blender-project-harness@latest doctor
224
- npm run test:installer
225
- npm test --prefix .kilo/blender-project-harness/tools/harness
226
- python -B -m unittest discover -s .kilo/blender-project-harness/tools -p "test_*.py" -v
227
- ```
228
-
229
- The Node suite is comprehensive and can take several minutes on Windows. Use `npm run pack:check`
230
- to inspect the npm package contents without publishing.
231
-
232
- Common fixes:
233
-
234
- - **`uvx` not found:** reopen PowerShell after installing uv, then reload Kilo.
235
- - **Harness dependency missing:** rerun `npx @punal_manalan/blender-project-harness@latest install --force`, or run
236
- `npm ci` in `.kilo/blender-project-harness/tools/harness`.
237
- - **Addon or port error:** reinstall with
238
- `uvx --from mcp-for-blender==2.2.6 mcp-for-blender install-addon`, restart Blender, and reload
239
- Kilo. Keep `BLENDER_PORT` in `.kilo/kilo.jsonc`; the harness reads it for launch and addon startup.
240
- - **Blender not found:** point `BLENDER_EXE` at your installed Blender executable, then relaunch
241
- with `blender_workflow`.
242
- - **Stale or conflicting instance:** stop the running instance through the harness before launching
243
- another project.
244
-
245
- ## What's in the repo
246
-
247
- ```text
248
- AGENTS.md Internal agent contract and workflow rules
249
- README.md This human setup and usage guide
250
- package.json npm package metadata and installer entry point
251
- bin/ npm installer executable
252
- installer/ Versioned installer, update, and backup logic
253
- .kilo/ Workspace Kilo config, skills, agents, and plugin
254
- .kilo/blender-project-harness/
255
- Harness, config, and version records
256
- .kilo/blender-project-harness/config.example.json
257
- Default worker and grader configuration
258
- .kilo/blender-project-harness/config.json
259
- Local worker and grader configuration (ignored)
260
- .kilo/blender-project-harness/tools/harness/
261
- Guarded Node.js workflow, MCP bridge, and harness tests
262
- .kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md
263
- Developer reference for the expected lifecycle and evidence
264
- Blender/ Blender project collection
265
- Commands/ Approved non-project shell-command records
266
- ```
267
-
268
- [`Blender/README.md`](Blender/README.md) covers the project-collection conventions. The generic
269
- harness lifecycle and evidence contract are documented in
270
- [`.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md`](.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md).
271
- Licensing lives in
272
- [`LICENSE`](LICENSE) and [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
273
-
274
- ## Known limits
275
-
276
- - No arbitrary Blender Python execution.
277
- - No browser or authentication bypass.
278
- - No automatic licence acceptance.
279
- - Media generation is agent-owned; the harness intakes and records the result.
280
- - Multi-scene, media-generation, and export paths are implemented, but the current live acceptance
281
- run is a single scene. Verify those paths in the project where they are used.
282
- - One live Blender instance and one writer at a time; parallel read-only inspection is allowed.
1
+ <h1 align="center">Blender Project Harness</h1>
2
+
3
+ <p align="center">
4
+ <strong>A guarded, evidence-driven Blender production workflow for Kilo.</strong><br>
5
+ Requirements, bounded scene changes, worker tickets, sealed evidence, independent graders, and clean project history.
6
+ </p>
7
+
8
+ <p align="center">
9
+ <a href="https://github.com/punal100/blender-project-harness/releases"><img alt="GitHub release" src="https://img.shields.io/github/v/release/punal100/blender-project-harness?display_name=tag&sort=semver"></a>
10
+ <a href="https://www.npmjs.com/package/@punal_manalan/blender-project-harness"><img alt="npm" src="https://img.shields.io/badge/npm-1.0.2-CB3837?logo=npm&logoColor=white"></a>
11
+ <a href="https://github.com/punal100/blender-project-harness/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/punal100/blender-project-harness"></a>
12
+ <img alt="Node" src="https://img.shields.io/badge/node-%3E%3D22-brightgreen">
13
+ <img alt="Blender" src="https://img.shields.io/badge/Blender-5.2-orange">
14
+ <img alt="MCP for Blender" src="https://img.shields.io/badge/MCP%20for%20Blender-2.2.6-blueviolet">
15
+ <a href="https://github.com/punal100/blender-project-harness/issues"><img alt="Issues" src="https://img.shields.io/github/issues/punal100/blender-project-harness"></a>
16
+ <a href="https://github.com/punal100/blender-project-harness/pulls"><img alt="PRs welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen"></a>
17
+ </p>
18
+
19
+ <p align="center">
20
+ <a href="#why">Why</a> |
21
+ <a href="#features">Features</a> |
22
+ <a href="#install">Install</a> |
23
+ <a href="#quick-start">Quick start</a> |
24
+ <a href="#how-it-works">How it works</a> |
25
+ <a href="#safety-model">Safety</a> |
26
+ <a href="#tests">Tests</a> |
27
+ <a href="#star-history">Star history</a>
28
+ </p>
29
+
30
+ ---
31
+
32
+ ## Why
33
+
34
+ Blender projects are easy to start and hard to keep honest. A scene can look right in the viewport while the geometry, topology, assets, exports, and project history are wrong. A long agent session can also lose track of what changed, what was reviewed, and what is safe to commit.
35
+
36
+ Blender Project Harness makes the workflow explicit:
37
+
38
+ - requirements are confirmed before work starts;
39
+ - scene edits are bounded by object names, paths, and declared scenes;
40
+ - a worker executes one ticketed apply batch at a time;
41
+ - visual evidence is inspected, not assumed;
42
+ - the final scene, renders, facts, manifest, and evidence key are sealed;
43
+ - independent graders review frozen evidence;
44
+ - project commits and checkpoints are harness-owned;
45
+ - assets, licences, and exports are verified before completion.
46
+
47
+ The user stays in plain language. The harness handles the production contract.
48
+
49
+ ---
50
+
51
+ ## Features
52
+
53
+ | Area | What you get |
54
+ |---|---|
55
+ | Guarded lifecycle | Registration, goals, bounded changes, tickets, WIP renders, seals, reviews, and checkpoints |
56
+ | Single writer | One Blender instance and one apply writer at a time; parallel read-only inspection is allowed |
57
+ | Exact scope | Object names, project-relative paths, declared scenes, requirements, and milestones |
58
+ | Evidence contract | Saved scene hash, per-scene renders, camera evidence, scene facts, manifest, and evidence key |
59
+ | Geometry checks | Dimensions, transforms, materials, topology, non-manifold edges, boundary edges, and loose vertices |
60
+ | Independent grading | Visual, technical, and spec graders with primary and backup models |
61
+ | Review modes | Off, Single, and All |
62
+ | Autonomy modes | Fully Autonomous and Partially Autonomous |
63
+ | Asset governance | Intake, hashes, MIME, dimensions, source, licence, sidecars, and strict asset checks |
64
+ | Multi-scene support | Declared scenes, duplicate/link semantics, per-scene evidence, and a master Video Sequencer scene |
65
+ | Export receipts | Format, path, bytes, SHA-256, source scene, and signature verification |
66
+ | Kilo integration | MCP routing, plugin permissions, goal state, skills, and subagent delegation |
67
+ | Installer | Versioned install, config preservation, dependency install, and automatic backups |
68
+ | Documentation | Setup guide, expected-flow reference, project templates, and contract tests |
69
+
70
+ ---
71
+
72
+ ## Architecture
73
+
74
+ ```mermaid
75
+ flowchart LR
76
+ U[User] --> K[Kilo]
77
+ K --> H[Blender Project Harness]
78
+ H --> T[Apply ticket]
79
+ T --> W[Worker]
80
+ W --> B[Blender]
81
+ B --> S[Saved scene]
82
+ S --> E[Sealed evidence]
83
+ E --> G[Visual, technical, spec graders]
84
+ G --> R[Review verdict]
85
+ R --> C[Commit and checkpoint]
86
+ C --> D[Completion]
87
+ ```
88
+
89
+ The harness is the only writer of workflow state. Workers execute assigned tickets. Graders read sealed evidence and write only their own reports.
90
+
91
+ ---
92
+
93
+ ## Install
94
+
95
+ ### Requirements
96
+
97
+ | Requirement | Version / notes |
98
+ |---|---|
99
+ | Blender | 5.2 is the current tested baseline; the MCP addon requires 3.0+ |
100
+ | MCP for Blender | Pinned `mcp-for-blender==2.2.6` |
101
+ | Node.js | 22 or newer |
102
+ | npm | Bundled with Node.js |
103
+ | uv / uvx | Required for the Blender MCP addon |
104
+ | Kilo | VS Code extension or CLI |
105
+
106
+ Install the Blender addon:
107
+
108
+ ```powershell
109
+ uvx --from mcp-for-blender==2.2.6 mcp-for-blender install-addon
110
+ ```
111
+
112
+ Enable **Interface: MCP for Blender** under **Edit > Preferences > Add-ons**, then restart Blender.
113
+
114
+ ### From npm
115
+
116
+ ```powershell
117
+ npx @punal_manalan/blender-project-harness@latest install
118
+ ```
119
+
120
+ The 1.0.2 package is the current release. If the registry does not have it yet, use the release
121
+ tarball or a source checkout below.
122
+
123
+ ### From the release tarball
124
+
125
+ ```powershell
126
+ npm install --save-dev https://github.com/punal100/blender-project-harness/releases/download/v1.0.2/punal_manalan-blender-project-harness-1.0.2.tgz
127
+ npx blender-project-harness install
128
+ ```
129
+
130
+ ### From source
131
+
132
+ ```powershell
133
+ git clone https://github.com/punal100/blender-project-harness.git
134
+ Set-Location blender-project-harness
135
+ npm ci --prefix .kilo/blender-project-harness/tools/harness
136
+ npm run doctor --prefix .kilo/blender-project-harness/tools/harness
137
+ ```
138
+
139
+ ### What the installer does
140
+
141
+ - Copies the harness into `.kilo/blender-project-harness/tools/`.
142
+ - Writes `VERSION`, `install.json`, `config.json`, and a copy of the package `AGENTS.md`.
143
+ - Runs `npm ci` for the installed harness.
144
+ - Updates `.kilo/kilo.jsonc` and `.kilo/plugins/blender-workflow.js`.
145
+ - Adds missing `AGENTS.md`, `.kilo/skills/`, `.kilo/agent/`, and `Blender/README.md`.
146
+ - Adds the local config and backups to `.gitignore`.
147
+
148
+ Run the same command to update. The previous installation is moved to:
149
+
150
+ ```text
151
+ .temp/blender-project-harness-backups/<version>-<timestamp>/
152
+ ```
153
+
154
+ The old copy is preserved, not deleted. The new version keeps `config.json` unless you pass
155
+ `--reset-config`. The package `AGENTS.md` is always available at
156
+ `.kilo/blender-project-harness/AGENTS.md`; the root `AGENTS.md` is only installed when missing and is
157
+ never overwritten.
158
+
159
+ ---
160
+
161
+ ## Quick start
162
+
163
+ Open the workspace in Kilo and describe the project. Include the subject, style, key objects, camera
164
+ and lighting preferences, dimensions, deliverables, and whether external files or paid media
165
+ generation are allowed.
166
+
167
+ ```text
168
+ Create a small cozy retro computer room. Use warm lamp light, a cool window accent, a desk with a
169
+ CRT monitor, keyboard, mug, chair, rug, and wall decor. Make one hero camera view and save the scene
170
+ inside a new Blender project.
171
+ ```
172
+
173
+ The agent then:
174
+
175
+ 1. Confirms requirements and asks for the workflow mode: **Fully Autonomous** or **Partially
176
+ Autonomous**.
177
+ 2. Asks for the review mode: **Off**, **Single**, or **All**.
178
+ 3. Scaffolds the project, fills its records, registers it, and starts the goal.
179
+ 4. Launches Blender through the harness and saves the bootstrap scene.
180
+ 5. Builds the project in bounded changes using worker apply tickets.
181
+ 6. Renders and inspects WIP evidence, then seals a review round.
182
+ 7. Dispatches the configured graders and aggregates their reports.
183
+ 8. Commits the scoped change, checkpoints the project, and reports the result.
184
+
185
+ ---
186
+
187
+ ## How it works
188
+
189
+ ```text
190
+ status and capabilities
191
+ -> requirements confirmation
192
+ -> workflow and review mode selection
193
+ -> scaffold, documents, registration, and goal
194
+ -> bounded scene change
195
+ -> apply ticket and worker execution
196
+ -> save and WIP render
197
+ -> finalize and seal
198
+ -> independent graders
199
+ -> review verdict
200
+ -> scoped commit and checkpoint
201
+ -> completion
202
+ ```
203
+
204
+ ### Bounded changes
205
+
206
+ - One observable outcome per change.
207
+ - Exact object names and project-relative paths.
208
+ - Declared scenes for multi-scene work.
209
+ - Requirement and milestone scoping.
210
+ - One open change per project.
211
+ - Apply batches up to ten operations.
212
+ - Ticket expiry and change-window recovery.
213
+ - Worker-only apply execution.
214
+
215
+ ### Sealed evidence
216
+
217
+ A sealed round captures:
218
+
219
+ - the saved `.blend` hash;
220
+ - per-scene renders;
221
+ - camera evidence;
222
+ - scene facts including dimensions and topology;
223
+ - a manifest with every evidence hash;
224
+ - a reproducible evidence key;
225
+ - a review round folder;
226
+ - the strict asset-check receipt when assets were used.
227
+
228
+ Graders must cite the same scene hash and evidence key. Missing evidence or tooling problems produce
229
+ `BLOCKED`, not a pass.
230
+
231
+ ### Review modes
232
+
233
+ | Mode | Behavior |
234
+ |---|---|
235
+ | Off | Self-review only |
236
+ | Single | One configured grader |
237
+ | All | Every configured grader, up to `max_parallel` |
238
+
239
+ Every worker and grader has a primary and backup provider/model/reasoning variant. A missing or
240
+ disabled grader is a tooling failure, not a silent pass.
241
+
242
+ ### Assets and exports
243
+
244
+ - User-supplied files enter through guarded `intake`.
245
+ - Downloads stage public HTTPS assets only; they do not import or register automatically.
246
+ - Generated media is agent-owned and requires permission before credits are spent.
247
+ - External assets require `SOURCE.md` and `LICENSE.txt`.
248
+ - Non-redistributable binaries stay out of Git.
249
+ - Strict `check_assets` must pass on the final unchanged scene.
250
+ - Exports receive a verified receipt with format, path, bytes, SHA-256, source scene, and signature.
251
+
252
+ ---
253
+
254
+ ## Safety model
255
+
256
+ | Guarantee | Behavior |
257
+ |---|---|
258
+ | One Blender instance | The workspace runs one guarded instance at a time |
259
+ | One writer | Apply operations execute through one worker at a time |
260
+ | Bounded edits | Every scene change has exact names, paths, and declared scenes |
261
+ | No raw Python | Arbitrary Blender Python and project Python execution are blocked |
262
+ | No manual project Git | Project commits go through the harness |
263
+ | No silent pass | Missing evidence and grader failures produce `BLOCKED` |
264
+ | No fake assets | Generated or downloaded files must be inspected, registered, and licensed |
265
+ | No hidden exports | Every export needs a verified receipt |
266
+ | No frozen-record edits | Registration changes require explicit re-registration |
267
+
268
+ ---
269
+
270
+ ## Configuration
271
+
272
+ Worker and grader configuration lives at:
273
+
274
+ ```text
275
+ .kilo/blender-project-harness/config.json
276
+ ```
277
+
278
+ The tracked template is:
279
+
280
+ ```text
281
+ .kilo/blender-project-harness/config.example.json
282
+ ```
283
+
284
+ Review and autonomy modes are frozen at registration. Changing them requires explicit
285
+ re-registration, not an in-place edit.
286
+
287
+ ---
288
+
289
+ ## Tests
290
+
291
+ ```powershell
292
+ npm run test:installer
293
+ npm test --prefix .kilo/blender-project-harness/tools/harness
294
+ python -B -m unittest discover -s .kilo/blender-project-harness/tools -p "test_*.py" -v
295
+ ```
296
+
297
+ The Node suite is comprehensive and can take several minutes on Windows. Use `npm run pack:check` to
298
+ inspect the npm package contents without publishing.
299
+
300
+ Current release checks:
301
+
302
+ - Installer tests: `6/6` passing.
303
+ - Python harness contract tests: `21` passing with `112` subtests.
304
+ - Targeted engine, plugin, shell-policy, and workspace tests: passing.
305
+ - Doctor: passing.
306
+ - npm package: `91` files, no `node_modules`, no local `config.json`.
307
+
308
+ ---
309
+
310
+ ## What's in the repo
311
+
312
+ ```text
313
+ AGENTS.md Internal agent contract and workflow rules
314
+ README.md This human setup and usage guide
315
+ package.json npm package metadata and installer entry point
316
+ bin/ npm installer executable
317
+ installer/ Versioned installer, update, and backup logic
318
+ .kilo/ Workspace Kilo config, skills, agents, and plugin
319
+ .kilo/blender-project-harness/
320
+ Harness, config, and version records
321
+ .kilo/blender-project-harness/config.example.json
322
+ Default worker and grader configuration
323
+ .kilo/blender-project-harness/config.json
324
+ Local worker and grader configuration (ignored)
325
+ .kilo/blender-project-harness/tools/harness/
326
+ Guarded Node.js workflow, MCP bridge, and harness tests
327
+ .kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md
328
+ Developer reference for the expected lifecycle and evidence
329
+ Blender/ Blender project collection
330
+ Commands/ Approved non-project shell-command records
331
+ ```
332
+
333
+ [`Blender/README.md`](Blender/README.md) covers the project-collection conventions. The generic
334
+ harness lifecycle and evidence contract are documented in
335
+ [`.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md`](.kilo/blender-project-harness/tools/harness/EXPECTED_FLOW.md).
336
+ Licensing lives in [`LICENSE`](LICENSE) and [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
337
+
338
+ ---
339
+
340
+ ## Star history
341
+
342
+ <a href="https://www.star-history.com/#punal100/blender-project-harness&Date">
343
+ <picture>
344
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=punal100/blender-project-harness&type=Date&theme=dark">
345
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=punal100/blender-project-harness&type=Date">
346
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=punal100/blender-project-harness&type=Date">
347
+ </picture>
348
+ </a>
349
+
350
+ Star history is provided by [star-history.com](https://www.star-history.com/).
351
+
352
+ ---
353
+
354
+ ## Known limits
355
+
356
+ - No arbitrary Blender Python execution.
357
+ - No browser or authentication bypass.
358
+ - No automatic licence acceptance.
359
+ - Media generation is agent-owned; the harness intakes and records the result.
360
+ - Multi-scene, media-generation, and export paths are implemented, but the current live acceptance
361
+ run is a single scene. Verify those paths in the project where they are used.
362
+ - One live Blender instance and one writer at a time; parallel read-only inspection is allowed.
363
+ - Windows is the primary documented setup environment.
364
+
365
+ ---
366
+
367
+ ## License
368
+
369
+ MIT. See [`LICENSE`](LICENSE).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@punal_manalan/blender-project-harness",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Install and update the guarded Blender project harness for Kilo workspaces.",
5
5
  "repository": {
6
6
  "type": "git",