# W-LIFE6 report

Started 8 October 2026, 23:33 CET. Deadline 9 October 2026, 01:50 CET.
Completed 9 October 2026, 00:19 CET, before the deadline.
Target: this private worktree and disposable GPU-staged copies, never a live app.

## What changed

- Seeded trees in gardens, village orchards, riverbanks and outside walls; a few unpaved square-edge trees.
- Fence hedges, rear wall-foot grass and rural verge grass. No grass in paved town streets.
- Real FGE oak, ash and bush geometry, progressive detail, distance culling and baked picture cards. Eight source modules copied unchanged; MIT notice retained.
- Used yards: fuel, barrels, baskets, crates, hay, carts, troughs and clothes lines. Trade and the planner's wealth-dependent trade choices guide goods.
- Upper-window flower boxes bind to actual rendered window sills. Flat lobed ivy leaves and wall lanterns dress some fronts.
- Church focal point: one old oak with a flat-topped round stone seat; benches, crosses or a well, flower beds and lantern posts. Existing low churchyard walls, gates and graves remain intact.
- A new side churchyard can be added only if its entire footprint fits clear, level ground. No wall pieces are dropped individually to make it squeeze in.
- Road, square, pad and building shapes are untouched. Only the final planner call and one renderer call were added.
- Game packs contain both new modules and the closed tree/grass dependency set. The pack adjusts vendor paths for extracted game code; the browse copy adjusts the same paths for the viewer.

## Performance

1600 x 900, real NVIDIA RTX 4000 SFF Ada through EGL, identical seed, detail and camera hooks.
Numbers come from the last-frame window.__fps badge, not the sidebar's first-render snapshot.
All six paired views pass +1,200,000 triangles and +40 calls. No claim about phones or every seed.
One forest silhouette per kind keeps calls bounded; size, rotation, tint and three distinct species still vary.
Grass draws only within 26 metres of the camera. From an aerial camera the textured ground is the cheap far grass.

| View | Before triangles / calls | After triangles / calls | Added triangles / calls | FPS after |
|---|---:|---:|---:|---:|
| street | 3,644,810 / 337 | 3,802,665 / 369 | 157,855 / 32 | 61.1 |
| yard | 738,600 / 74 | 893,072 / 100 | 154,472 / 26 | 60.1 |
| church | 3,631,874 / 325 | 3,795,347 / 358 | 163,473 / 33 | 60.3 |
| town-aerial | 3,647,474 / 341 | 3,792,972 / 362 | 145,498 / 21 | 59.7 |
| village-aerial | 2,354,230 / 219 | 2,432,436 / 250 | 78,206 / 31 | 60.5 |
| city-aerial | 4,778,732 / 320 | 5,240,626 / 349 | 461,894 / 29 | 60.4 |

## Counts

Accepted dressing-plan additions only, not the original props already in the settlement.
Oak includes the old church tree. Bushes and hedges use the engine's bush preset.
Flower boxes are planned attachments: the renderer omits any without a matching real upper window.
Grass counts are patches, not individual blades. The renderer makes blades only when the camera approaches.

| Accepted additions by kind | Village/plain/1 | Town/hill/1 | City/plain/1 |
|---|---:|---:|---:|
| ash | 22 | 40 | 87 |
| barrel | 25 | 0 | 51 |
| barrel_stack | 3 | 0 | 31 |
| basket_produce | 7 | 0 | 51 |
| bench_wood | 4 | 5 | 3 |
| bush | 60 | 76 | 297 |
| cart_hand | 1 | 13 | 10 |
| churchyard_cross | 0 | 2 | 1 |
| firewood_stack | 18 | 61 | 107 |
| flower_bed | 3 | 6 | 17 |
| flower_box | 18 | 65 | 250 |
| grass | 398 | 134 | 421 |
| hay_bale | 1 | 7 | 7 |
| hay_cart | 2 | 0 | 15 |
| hedge | 122 | 63 | 39 |
| ivy | 15 | 25 | 71 |
| lantern_iron | 19 | 33 | 75 |
| lantern_post | 2 | 2 | 2 |
| market_goods | 4 | 22 | 22 |
| oak | 71 | 111 | 226 |
| round_stone_bench | 1 | 1 | 1 |
| trough | 0 | 0 | 2 |
| washing_line | 4 | 0 | 4 |
| well_roofed | 1 | 0 | 0 |

## Evidence

- Paired captures: [before](W-LIFE6-EVIDENCE/before/) and [after](W-LIFE6-EVIDENCE/after/).
- Street at eye level, fixed barn yard, church square, village aerial, city aerial, plus town aerial. All images were opened and inspected, not just generated.
- Extra close views: [church tree and seat](W-LIFE6-EVIDENCE/close/church-eye.png), [working yard](W-LIFE6-EVIDENCE/close/working-yard.png), [stocked stalls](W-LIFE6-EVIDENCE/close/market-counter.png), [orchard](W-LIFE6-EVIDENCE/close/village-orchard.png).
- GPU checks: no page errors; [budget data](W-LIFE6-EVIDENCE/budget.json), [before measurements](W-LIFE6-EVIDENCE/before/metrics.json), [after measurements](W-LIFE6-EVIDENCE/after/metrics.json).
- Local disposable server at http://127.0.0.1:8987 served the page and all four new entry modules with HTTP 200, then stopped. [HTTP results](W-LIFE6-EVIDENCE/http.json).
- test/dress.test.mjs: 9 passed. Determinism, clear roads/doors/pads/buildings/water/walls, level feet, pairwise solid clearance, no layout rewrites, concave polygons, supported market goods, real sill binding and cleanup.
- imports.test.mjs plus settlement-render.test.mjs: 3 passed, no skips, including all kits missing and stable colliders.
- Packed-code check: 43 local imports resolve inside the extracted archive; the dress renderer loads. The code archive is about 330 KB compressed. Standard pack warnings concern already-missing optional lite models and style manifests, not dressing dependencies.
- All eight vendored files byte-match the engine source: [hashes](W-LIFE6-EVIDENCE/vendor-sha256.json).
- Real keyboard input: holding W moved the village walker 3.37 metres while staying on the clear street. [Movement record](W-LIFE6-EVIDENCE/close/walk.json), [input screenshot](W-LIFE6-EVIDENCE/close/walk-input.png).
- Full settlement.test.mjs: **54 passed, 0 failed, 0 skipped**, run once. Finished 9 October 2026, 00:19 CET. [Full output](W-LIFE6-EVIDENCE/settlement-test.log).
- Total named tests: **66 passed** across the full settlement, dressing and renderer/import checks.

## Failures corrected during the pass

- The first concave-square test failed. General polygon edge handling replaced the convex-only fallback; the test now passes.
- An early tree/bush pass added 47 calls on the town street, above budget. One geometry variant per species and reuse of church crosses instead of introducing duplicate wells brought the final addition to 32 calls.
- The sill-binding check initially used the wrong panel width field. Binding now uses the actual opening outline; both missing-kit render tests pass.
- The keyboard probe initially returned its callback to Playwright, which called it without a camera. The disposable probe was corrected, passed, and its failed staging copy was removed.

## Gaps and risks

- Dense fronts remain sparse at ground level. freeDoors protects the whole facade, not just one door. Ground objects that cannot fit are dropped; upper window plants, ivy and lanterns provide front dressing without blocking the approach.
- The first fixed barn-yard camera still shows mainly shrubs: that narrow sloping yard cannot fit the bigger goods. The additional working-yard camera shows a yard where the cart genuinely fits.
- The city seed's cathedral has no free rectangle for an additional side cemetery. Its forecourt gets the tree, round seat, flower beds and furniture; the new enclosure is omitted, not half-built.
- Orchards reuse oak silhouettes at fruit-tree height, not a new fruit-tree species. Ivy and flower beds are inexpensive shapes; they are not photoreal leaves or botanically distinct flowers.
- No buckets or tool atoms were invented. No clothes lines across roads or alleys: they stay in clear yards.
- No vegetation roots inside paving. Square trees are on unpaved edges; furniture can occupy level square paving.
- The tree driver needs a rendered frame before it initializes. Missing vendor files would lose tree/grass drawing; packed dependency checks cover the delivered paths.
- No live deploy, no W-ROADS6 branch merge, no phone benchmark, no paid generation and no independent agent review.
- Rollback: revert the four W-LIFE6 implementation commits, or remove the two hook calls to disable dressing while retaining the original settlement.

Cleanup: intermediate shot sets and task-owned staging removed; GPU and local test servers stopped. Final paired shots and test logs retained.

## Commits

- ebee21f: vegetation and deterministic planner/renderer foundation.
- 7188544: working yards and market goods.
- 567558d: church tree, seat and forecourt furniture.
- 2df3e14: measured draw budget, yard cart placement, real sill binding, leafy ivy and game packaging.

## 6b: street fronts

Started 9 October 2026, 00:22 CET. Stop deadline 01:35 CET.
Private viewer and disposable GPU staging only, no live app.

### Item 1: ground-level fronts

- Real rendered door axes replace only their owners' conservative full-front dressing exclusion. The settlement's full-facade freeDoors law is unchanged.
- A pure second-stage planner receives real layout openings from the existing renderer hook. Each real door keeps its width plus 0.6 m by 1.6 m clear ground. Rear doors retain their protection too.
- Benches, bulged barrels with hoops, plank crates, flower pots, brooms, mounting stones, tavern barrel tables and folding shop counters with supported goods use shared geometry batches.
- Every whole footprint stays in its owner's 0.9 m strip. Ground variation over corners and centre is limited to 0.08 m. Feet sit on the existing front paving, not below it.
- Unknown hero entrances and missing layout openings are not guessed. These fronts are skipped. Existing urban side-of-plot ground attempts were removed; ecology and yard random choices remain unchanged.
- Kind counts and accepted placements are in `group.userData.dress.stats().street`, because exact doors exist only after layout. `plan.dress` remains deterministic and unchanged by rendering.
- Four new tests passed using production catalogue/layout/render choices for town/hill/1, city/river/1 and city/plain/1. They cover real door boxes, whole front strips, level feet, neighbours, pairwise clearance, every kind, repeatability and no plan changes. Existing nine dressing tests passed separately.
- Early city pass exceeded the triangle budget (+595,060). Low-detail flower clusters replaced over-detailed small leaves, without reducing frontage occupation. Final paired measurements follow below.

### Item 2: above the street

- Instanced sloping cloth awnings bind to real ground-floor shop and bakery windows. Some have eight cream/colour stripes, others plain cloth, with wall rails and no street posts.
- Hanging flower baskets sit on a few upper-floor corners.
- Washing crosses measured 1.2 to 2 m alley slots, two metres behind the facade line. Three narrow residential lanes in city/river/1 also get wall-to-wall washing. No main roads or squares are crossed, and there are no ground poles.
- The clothes' lowest edge stays at least 3.2 m above the sampled ground. Both ends meet actual walls on houses with upper floors.
- All 13 extended dressing tests passed, with no skips. The new tests also cover supported alley/lane ends, upper-floor owners, road kind, span widths, overhead clearance and attachment counts.
- Item 2 GPU measurements: town walk +106,500 triangles / +9 calls; town aerial +106,500 / +9; city/river aerial +321,724 / +7. These are paired with today's main, heroes enabled, at 1600 x 900. The final evidence table follows in Item 3.

### Item 3: final evidence and budget

A final pass adds shallow produce baskets beside shops. Original hanging signs, roads, squares, ground, house layouts, the settlement renderer and the viewer page were not edited.

The GPU is a real NVIDIA RTX 4000 SFF Ada through EGL. Both sides use heroes enabled, 1600 x 900, seed 1, auto detail and exactly the same camera hooks. Numbers are the last-frame `window.__fps` badge, not the sidebar snapshot.

| View | Before triangles / calls | After triangles / calls | Added triangles / calls | FPS after |
|---|---:|---:|---:|---:|
| town-main | 3,059,589 / 411 | 3,166,389 / 420 | 106,800 / 9 | 60.2 |
| town-shop | 2,775,858 / 316 | 2,883,090 / 326 | 107,232 / 10 | 60.3 |
| city-lane | 4,506,788 / 355 | 4,829,174 / 362 | 322,386 / 7 | 60.1 |
| town-aerial | 3,049,896 / 404 | 3,156,696 / 413 | 106,800 / 9 | 59.7 |
| city-aerial | 4,591,928 / 377 | 4,914,314 / 384 | 322,386 / 7 | 59.8 |

Every paired view passes +350,000 triangles and +15 calls. This does not prove every seed or phone performance.

Accepted front additions from the actual GPU renders, with heroes enabled. Counts exclude existing yard, church and window dressing.

| Kind | Town/hill/1 | City/river/1 |
|---|---:|---:|
| awning | 12 | 17 |
| barrel | 95 | 272 |
| barrel_table | 2 | 5 |
| basket_produce | 7 | 12 |
| bench_wood | 38 | 245 |
| broom | 102 | 258 |
| crate_stack | 12 | 16 |
| folding_counter | 8 | 18 |
| hanging_basket | 15 | 57 |
| mounting_stone | 40 | 190 |
| potted_plant | 163 | 508 |
| washing_line_alley | 3 | 16 |
| washing_line_lane | 0 | 3 |

- Paired images: [before](W-LIFE6b-EVIDENCE/before/) and [after](W-LIFE6b-EVIDENCE/after/). Three eye-level streets were opened and compared: the town main front, town bakery p4, and city shop p45. Aerial views were opened too.
- Close views: [alley washing](W-LIFE6b-EVIDENCE/close/alley-washing.png), [lane washing](W-LIFE6b-EVIDENCE/close/lane-washing.png), [hanging basket](W-LIFE6b-EVIDENCE/close/hanging-basket.png), [tavern table and bench](W-LIFE6b-EVIDENCE/close/tavern-seat.png).
- [Budget record](W-LIFE6b-EVIDENCE/budget.json), [before measurements](W-LIFE6b-EVIDENCE/before/metrics.json), [after measurements](W-LIFE6b-EVIDENCE/after/metrics.json). Zero page errors in both paired runs.
- Local disposable http://127.0.0.1:8987 served the page, both changed modules, THREE, trees and heroes with HTTP 200, then stopped. [HTTP record](W-LIFE6b-EVIDENCE/http.json). GPU staging used private loopback port 8988 and was removed by the runner.

### Limits and rollback

- This pass dresses medieval town and city fronts. Unsupported styles, unknown entrances and hero houses without layout openings are skipped rather than guessed. The heroes retain their authored goods and plants.
- Furniture is omitted on slopes or on fronts too narrow for real door clearance. No claim that every facade receives every kind.
- Flowers and clothes are inexpensive geometry, not new photographic plant models or simulated cloth. Washing lines are straight rather than sagging. Existing flower boxes and ivy remain unchanged.
- No road, square, terrain or viewer changes; no live deploy, branch merge, phone benchmark, paid asset generation or nested agents.
- Wrong door metadata could obstruct a door; wrong footprint sizes could spill into the lane. Revert the 6b implementation commits to restore the merged W-LIFE6 front behaviour without touching the settlement layout.

### Final checks and corrected probe failures

- Final `node --test test/dress.test.mjs`: **13 passed, 0 failed, 0 skipped**, including produce baskets and all overhead checks. [Output](W-LIFE6b-EVIDENCE/dress-tests.log).
- Imports and missing-kit renderer checks: **3 passed, 0 failed, 0 skipped**. [Output](W-LIFE6b-EVIDENCE/render-tests.log).
- Real W input moved the town/hill/1 walker **3.44 m** down the main street while keeping the new front objects beside the wall. [Movement](W-LIFE6b-EVIDENCE/walk/walk.json), [input screenshot](W-LIFE6b-EVIDENCE/walk/walk-input.png).
- A generic city/river/1 `__walkStreet` start did **not** move on W. That start's cause was not established or changed, so city walking controls are not claimed verified. [Failed movement record](W-LIFE6b-EVIDENCE/city-start-walk.json).
- The first GPU run timed out because this worktree lacked ignored THREE libraries. Existing local library files and the main hero GLB were supplied before the paired baseline was captured. No dependency versions were changed.
- The first close washing-line camera entered a house. Its lane camera was moved along the lane instead of across it; both final washing-line images were opened again and show wall-to-wall cloth with clear ground below.
- Canonical and browse dressing modules match, except the pre-existing vendor-relative import path adjustment. No settlement renderer hook change was needed.
- Intermediate GPU captures were removed. Final before/after, close views, movement and test evidence were retained.

Completed 9 October 2026, 01:08 CET, before the 01:35 CET deadline.

- Full settlement suite: **54 passed, 0 failed, 0 skipped**. [Output](W-LIFE6b-EVIDENCE/settlement-tests.log).
- Final total: **70 passed** across dressing, imports/missing-kit renderer and settlement checks. The city default-start movement probe remains a separately reported failure, not a passing test.
- All five paired GPU budget checks pass. Zero page errors in the before, after and close capture runs. Both module syntax checks and the whitespace check pass.
- Task-owned local/GPU servers are stopped. Intermediate captures and the temporary hero GLB were removed. Copied THREE dependency folders were replaced with ignored read-only-use symlinks to the existing local library; tracked FGE vendor sources were untouched. Final evidence is about 27 MB.
- Implementation commits: `0e62806` (real front ground furniture), `53f1a25` (awnings and upper-floor washing), `f7bd946` (produce baskets, tests and paired GPU evidence). Revert these three to undo the implementation.
