Polish Gothic hall with lanterns, landscaping and checked edits

This commit is contained in:
Emil
2026-09-12 23:45:14 +03:00
parent 54af124a6d
commit f50fce2e55
13 changed files with 662 additions and 4 deletions
+2 -1
View File
@@ -29,6 +29,7 @@ The following scenarios passed on real Paper in a separately created test world:
- A hollow cube through real MCP: 26 blocks; `.schem` export, the asset library, undo, import at the same anchor, and another undo restoring 27 blocks of air.
- A missing camera returns an error without substituting an image.
- After installing the mod in Prism, a 575-block tower was built and four real 1280×720 captures were obtained. The last completed the full Camera → Paper → Bridge → MCP ImageContent path. The first request failed when the viewpoint changed; a retry with the client stationary succeeded. [Test report](ONE_CLIENT_TEST.md).
- A reference-based Gothic hall was built, photographed, and polished through checked recipes: 30,125 final blocks and 53 lanterns. Final verification covered 30,843 positions, including 718 removals; grass growth on eight newly planted soil blocks was explicitly recorded. Day, dusk, and interior captures were inspected. Nonpersistent leaves and waterlogged lantern states were rejected by the updated live Paper policy. [Build report](builds/GOTHIC_HALL.md).
Real `codex-acp` completed `initialize` in a separate profile without login: ACP v1 and session loading support are confirmed. This does not yet test a model turn or tool calls after authentication. The tests did not invoke a model or consume model tokens.
@@ -54,4 +55,4 @@ Real `codex-acp` completed `initialize` in a separate profile without login: ACP
1. The user logs in to the dedicated Codex profile, connects to Paper, and binds the owner. Test a small build requested through in-game `/ai`, response streaming, MCP use, and cancellation.
2. Extend the verified single-client Prism scenario: test disconnection/freezing during capture and convenient switching between building and camera use.
3. Complete the build → inspect → correct cycle, then reassess release readiness, limits, context deltas, and geometry extensions.
3. Extend the demonstrated build → inspect → correct cycle to an authenticated ACP model turn, then reassess release readiness, limits, context deltas, and geometry extensions.
+30
View File
@@ -1,5 +1,35 @@
# Gothic Hall
## Polished version
The current build contains **30,125 blocks**, including **53 lanterns** and **642 persistent leaf blocks**. The polishing pass changed 4,569 positions across 87 checked operations: 1,489 additions, 718 removals, and 2,362 replacements.
The main roof now has six small dormers instead of ten large ones. A thin iron ridge and window mullions, quieter gray stone bands, and a gold block bell bring the architecture closer to the reference. Portal lights, courtyard lamps, three nave chandeliers, wing and tower lights, low planted beds, and six narrow trees complete the scene. The existing entrance, stairs, timber structure, and connecting passage remain usable.
![Polished Gothic Hall in daylight](gothic-hall-polished-day.png)
![Polished Gothic Hall at dusk](gothic-hall-polished-evening.png)
![Lanterns and chandeliers inside the great hall](gothic-hall-polished-interior.png)
These are unprocessed Minecraft framebuffer captures without shaders: [day metadata](gothic-hall-polished-day.capture.json), [evening metadata](gothic-hall-polished-evening.capture.json), and [interior metadata](gothic-hall-polished-interior.capture.json). The exterior views use the same position and angles as the original capture below, with the server view distance increased to 12 chunks.
The new geometry lives in `polish_architecture.py` and `polish_scene.py` alongside the frozen original modules. After constructing the baseline and its 18-block finishing pass, run:
```bash
python3 scripts/polish-gothic-hall.py plan
python3 scripts/polish-gothic-hall.py apply
python3 scripts/polish-gothic-hall.py verify
```
The manifest, ledger, and verification report are in `.runtime/gothic-hall/polish/`. Preparation checks the canonical baseline and the current blocks; a saved plan must still expect the same states. Every operation receives a durable idempotency key before application. The original manifests and ledgers are preserved.
Final verification checked **30,843 positions**, including all 30,125 occupied positions and 718 removals to air, across 90 inspection tiles. It explicitly reported eight planted soil blocks observed as grass rather than dirt. This allowance is limited to the newly introduced planter soil during verification; preparation and application still require exact current states, and other mismatches stop the script without overwriting them. The final operation was `e7f0371d-e64c-48e0-86ae-13ac813dab98`.
The world and journal were backed up locally before polishing, and the finished world was saved with `save-all flush`. The camera remains honest about its heuristic readiness: `serverRevisionVerified` is `false`; block verification is a separate server read. The old baseline verification commands below describe their historical stages and will report expected differences after this polishing pass.
## Original baseline
A reproducible build based on the [visual reference](../references/gothic-hall-v1.png): a large hall with galleries, a smaller two-story wing, a connecting passage, and a bell tower. Modules in `scripts/builds/gothic_hall/` generate the geometry; `scripts/build-gothic-hall.py` applies it through the Paper plugin's checked operations.
This report records the original baseline before subsequent decorative polishing. It adapts the reference to the available palette: stone bricks, andesite, diorite, dark deepslate, wood, and tinted glass. No shaders were used. Detailed furnishing and landscaping were not part of this baseline; it includes a terrace, stairs, simple benches, and a raised platform. The bell is built from blocks, without a bell entity.
@@ -0,0 +1,29 @@
{
"capturedAt": "2026-09-12T20:42:08.334749638Z",
"dimension": "minecraft:overworld",
"x": 0.0,
"y": -20.0,
"z": -63.0,
"eyeY": -18.380000114440918,
"yaw": 25.0,
"pitch": 16.0,
"fov": 85,
"readiness": "local_chunks_and_render_queue_stable",
"serverRevisionVerified": false,
"loadedChunkRadius": 1,
"stabilizationTicks": 24,
"stabilizationFrames": 3,
"afterOperationId": "e7f0371d-e64c-48e0-86ae-13ac813dab98",
"status": "completed",
"mimeType": "image/png",
"width": 1280,
"height": 720,
"sourceWidth": 1280,
"sourceHeight": 720,
"captureId": "c219512d-ce8a-4e75-ba24-77e470abb061",
"imageSha256": "bbefeae9f00e33adbda3a98fa85c91fae43d2590339a6036b0a352ddd75f7a7a",
"imageBytes": 813940,
"elapsedSeconds": 2.063,
"transport": "authenticated Paper HTTP camera_capture",
"testMode": "one owner/spectator client"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 795 KiB

@@ -0,0 +1,29 @@
{
"capturedAt": "2026-09-12T20:40:31.617476861Z",
"dimension": "minecraft:overworld",
"x": 0.0,
"y": -20.0,
"z": -63.0,
"eyeY": -18.380000114440918,
"yaw": 25.0,
"pitch": 16.0,
"fov": 85,
"readiness": "local_chunks_and_render_queue_stable",
"serverRevisionVerified": false,
"loadedChunkRadius": 1,
"stabilizationTicks": 24,
"stabilizationFrames": 3,
"afterOperationId": "e7f0371d-e64c-48e0-86ae-13ac813dab98",
"status": "completed",
"mimeType": "image/png",
"width": 1280,
"height": 720,
"sourceWidth": 1280,
"sourceHeight": 720,
"captureId": "c1ac75c3-f21e-484e-be35-d783790cdeae",
"imageSha256": "637bd82eb213ed609cbc1625e62fec96858218df000f18998e22c96294222dfa",
"imageBytes": 677364,
"elapsedSeconds": 2.019,
"transport": "authenticated Paper HTTP camera_capture",
"testMode": "one owner/spectator client"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 662 KiB

@@ -0,0 +1,29 @@
{
"capturedAt": "2026-09-12T20:37:56.024582621Z",
"dimension": "minecraft:overworld",
"x": -31.0,
"y": -51.0,
"z": -29.0,
"eyeY": -49.38000011444092,
"yaw": 0.0,
"pitch": -8.0,
"fov": 70,
"readiness": "local_chunks_and_render_queue_stable",
"serverRevisionVerified": false,
"loadedChunkRadius": 1,
"stabilizationTicks": 21,
"stabilizationFrames": 3,
"afterOperationId": "e7f0371d-e64c-48e0-86ae-13ac813dab98",
"status": "completed",
"mimeType": "image/png",
"width": 1280,
"height": 720,
"sourceWidth": 1280,
"sourceHeight": 720,
"captureId": "8c11e828-4678-40ee-8037-91dd50f11ec9",
"imageSha256": "4587c6169b11f94044bb46daea310d8d02f4ff1980106c896fc82298c656e516",
"imageBytes": 875403,
"elapsedSeconds": 1.478,
"transport": "authenticated Paper HTTP camera_capture",
"testMode": "one owner/spectator client"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 855 KiB