{
  "version": 1,
  "updatedAt": "2026-07-31T01:25:00Z",
  "window": {
    "startedAt": "2026-07-28T04:55:00.000Z",
    "deadline": "2026-08-06T03:00:00.000Z",
    "timezone": "Pacific/Honolulu"
  },
  "goal": "Make the 3D scene match the napkin sketch and look 80% real—by Aug 5, 5 PM HST.",
  "progress": {
    "percent": 18,
    "label": "2 of 9 landmark cards passing (Hiker, Sapling). The Stump was reverted when the occlusion instrument was repaired: it is 3 pixels visible and its form ruling was not reproducible. Lookout and Split Rock were reverted earlier on the scale audit. percent = milestones done / 11 x 100, where milestones = 9 cards + 2 realism-80 readings. 2/11 = 18%.",
    "mapping": {
      "landmarkCards": 9,
      "realism80ReadingsNeeded": 2,
      "formula": "milestonesDone/11*100"
    }
  },
  "claimStatus": {
    "label": "The foreground defect is not what anyone thought it was",
    "tone": "blocked",
    "reason": "Three blind judges called the lower half of every picture a big untextured boulder. We checked which objects are actually there by removing each one in turn: all seven landmarks together account for at most a tenth of that area, and most of that is measurement noise. About ninety percent of it is simply the ground. So there is no boulder model to swap out. We then spent two runs testing whether the ground texture is too coarse, and made it up to ten times finer across every surface in the scene: the picture barely moved, well inside our own margin of error. The real reason it looks blank is that the whole foreground is in deep shade, at about a quarter of the brightness of the middle distance. Detail we add there cannot be seen. The fix is a lighting setting that fills shadows with sky light. It is already built into our tools, has never been switched on, and needs no decision from Adam. Still two of nine cards, and five of the rest are still waiting on Adam's one terrain question."
  },
  "score": {
    "goal": 80,
    "complete": 48.3,
    "technicalBasis": 92.8,
    "technicalBasisLabel": "Partial technical basis — not a claimable score",
    "goalEligible": true,
    "perceptualJudging": "Split Rock composition passed 3 of 3 — the new pictures have not received a full realism score",
    "confirmationPanel": "not run — realism is below 80",
    "familyFloor": {
      "id": "B",
      "label": "Weakest section passes",
      "value": 48.8,
      "required": 35,
      "sourceLabel": "Every required section passed the last full test. The new pictures still need a fresh full realism review."
    }
  },
  "evidence": {
    "capturedAt": "2026-07-29T01:57:08.711Z",
    "series": "NAPKIN-39 — all seven landmarks in position",
    "hero": "/demo-base/latest/hero.png",
    "left": "/demo-base/latest/orbit-left-10.png",
    "right": "/demo-base/latest/orbit-right-10.png",
    "lookoutDetail": "/demo-base/latest/detail/lookout-firewatch.png",
    "target": "/demo-base/napkin-composition-v12-labels.png",
    "benchmark": "/demo-base/store-reference-official.jpg"
  },
  "landmarks": [
    {
      "id": "hiker",
      "name": "Hiker",
      "role": "6'0\" adult male, large in the left foreground — the scale anchor",
      "state": "passing",
      "stateLabel": "Passing — sketch match + roast clean",
      "evidence": "Landed Jul 29 14:35 HST after three capture iterations. Measured on the promoted hero: head y 0.45 (target 0.47), feet y 0.79 (target 0.78), body x ~0.24, exactly 1.83 m tall, walking away toward Split Rock. Roast: both boots planted on the rocky rise with a contact shadow, no grass burial, no occlusion — the rise itself is the sketch's own answer (it draws him standing on rocks; natural ground there sat 2.6 m below the camera's). Jul 29 evening, per Adam's ruling: turned to face the lookout tower (yaw computed from his position to the tower's, 5.3 deg). Re-roast clean — boots planted, shadow intact, centroid unmoved — card keeps passing.",
      "next": "Holds unless the intimate rebuild moves his ground; re-roast after each terrain phase.",
      "image": "/demo-base/landmarks/hiker.jpg",
      "sketch": "/demo-base/landmarks/hiker-sketch.jpg",
      "thumb": "/demo-base/landmarks/hiker-thumb.jpg"
    },
    {
      "id": "lookout",
      "name": "Lookout",
      "role": "Fire tower on top of a big hill, right of center",
      "state": "failing",
      "stateLabel": "Reverted Jul 30 — right size in metres, but nearly half its drawn height in the picture",
      "evidence": "REVERTED by supervisor call. The tower itself is honest: built 9.14 m against a 30-foot (9.144 m) callout, essentially exact. What fails is where it stands. Adam's 30-foot arrow, re-read off the ink, spans more of the frame than the box anyone had been using, and it puts the tower at about 136 m. It is built at 293 m. Standing more than twice as far away as drawn, it fills only 46 percent of the height Adam gave it. An early overlay said it 'reads smaller than its callout' and nobody chased it; that read was right.",
      "next": "Holds unless the intimate rebuild moves the hill; re-roast after each terrain phase.",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "offsetPercent": 2.53,
      "pass": true,
      "image": "/demo-base/landmarks/lookout.jpg",
      "sketch": "/demo-base/landmarks/lookout-sketch.jpg",
      "thumb": "/demo-base/landmarks/lookout-thumb.jpg"
    },
    {
      "id": "hiking-trail",
      "name": "Hiking Trail",
      "role": "Single-file dirt footpath entering left, threading the stump/Old Log gap, exiting lower right",
      "state": "blocked",
      "stateLabel": "Lit foreground band under the hiker — blend-verified, exit alignment still open",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "image": "/demo-base/landmarks/hiking-trail.jpg",
      "sketch": "/demo-base/landmarks/hiking-trail-sketch.jpg",
      "thumb": "/demo-base/landmarks/hiking-trail-thumb.jpg",
      "next": "Re-thread to Adam's overlay: left arm from frame-left (~0.04,0.60) descending behind the hiker to the stump base (~0.44,0.74); exit segment (~0.62,0.80)→(1.00,0.95) in FRONT of the old log, bottom-right corner",
      "evidence": "PASSED Jul 30 (supervisor visual pass + validated un-projection): Adam's green route threaded as 13 world waypoints through the locked lens — enters over the west bank, fords the braided wash, passes behind the hiker, brushes the stump, dives UNDER the Old Log as drawn, exits bottom-right. Exactly 3 feet wide, wearing the terrain's own soil albedo and normal map at 0.7 m sampling. Supervisor lighting ruling: the dark crossing band is the log's true cast shadow — no physical errors on the zoomed pass. Two declared route deviations on record: the sketch's first two entry points sit above the camera's effective horizon (subpixel for a 3-ft ribbon), and the left arm re-enters at the water's edge because the sketch's left margin is the wash in-scene. Jul 30 TRAIL-03: rebuilt as Adam's foreground sweep — a lit walked band running under the hiker's boots across the near ground, exit pulled toward the camera and widened to the drawn breadth. Verified against a registered blend rather than by eye."
    },
    {
      "id": "stump",
      "name": "Stump",
      "role": "Distinctive cut stump at the local scene origin (0,0,0), left of the pool — second in work order after the hiker",
      "state": "blocked",
      "stateLabel": "REVERTED — hiding it changes 3 of 5,115 pixels; the form ruling was not reproducible",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "offsetPercent": 0.02,
      "pass": true,
      "image": "/demo-base/landmarks/stump.jpg",
      "sketch": "/demo-base/landmarks/stump-sketch.jpg",
      "thumb": "/demo-base/landmarks/stump-thumb.jpg",
      "next": "Pass = position, scale, and orientation line up decently with the v11 sketch AND a roast-style review finds no common-sense visual/physical errors (contact, support, scale, shadows). Dimension matches contract; needs roast pass and visibility check in hero.",
      "evidence": "Slid from 35 m to 8 m on its camera ray (Jul 29): cut face measured inside the green target box, visibility floor cleared for the first time (silhouette 0.0010 → 0.0195). Still failing the roast: the procedural 14-sided cylinder reads as a smooth wooden block at this range, and the log's root spikes crowd its right edge. A scanned stump asset is the queued fix. Jul 30 STUMP-03/04: six candidates now tried (four Sketchfab, two Meshy from the photoreal ref). Manifest gates and a new stature-scaling mode both work — the scan finally seats at full drawn height — but imported scan textures keep failing in this HDRP path (pale untextured mass). The blocker is named: the scanned-material import path, not sourcing. CORRECTION Jul 30: the 'texture path' blocker I named was wrong. Instrumented logging proves the import path is healthy — texture loaded and assigned, neutral tint, 30,115 UVs populated, colour-space flags correct. The real fault is geometry: Meshy reconstructs a flat-topped slab from a crop of a contextual scene photo. The hunt stops at six candidates; the procedural snag stands; the next lever if reopened is a background-isolated stump photo or an authored mesh. Third independent judge has now read it as a building ('a raw textured box primitive, no roof, no eaves, no door'). RECEIPT CORRECTION Jul 31: the 'ForgeMedia has no stump' receipt is withdrawn — that search does not filter (it returns the same 20 titles for any query, including nonsense), so it never answered the question. The Sketchfab receipts stand; the ForgeMedia one does not. MAJOR CORRECTION Jul 31: querying the catalogue directly (the search returns the same 20 rows for any term, including nonsense) found 'Meshy — stump_01 (refined)', tagged valley-scene and tree-stump — a refined stump built for THIS scene, present the whole time. The card was declared blocked on a receipt from a search that never filtered. It is probably not blocked. RULED PASSING Jul 31 after the drawn-height reading was corrected. Adam drew the stump from slightly above, so the sketch box stacks a foreshortened cut-face ellipse, the true side wall and outward-splaying roots — only the side wall is height. Measured against the 3'0\" arrow the drawn stature is ~0.27 m, not 0.914 m, which retired the invented H/width >= 0.8 criterion that had disqualified eight correct assets across three Meshy rolls and a Sketchfab hunt. The passing asset is the Sketchfab scan stump-in-the-meadow-3 with its scanned turf disc trimmed in headless Blender (14,789 -> 6,781 verts), seated at natural proportions with stumpScaleMode width, heightWorld 0.37. Width 0.914 m on the callout; X centroid +0.0089, tighter than Split Rock passed on; elliptical cut face with growth rings resolved; contact continuous with a cast shadow directionally consistent with the hiker's. Root entry is recorded as verified on the asset but NOT resolvable in the judged frame at ~30 px wide — deliberately not claimed, because unfalsifiable passes are how the Y-centroid problem hid for weeks. Y centroid +0.1990 is flagged under the scene-wide vertical bias, not charged to this card. REVERTED by the supervisor Jul 31, after the occlusion instrument was repaired. occludedShare had been computed as a whole-frame changed-pixel count divided by an object-localised silhouette count — two different regions in one fraction — and it overstated visibility for every terrain-embedded landmark. Re-derived through the intersected mask, hiding the stump changes 3 of the 5,115 pixels it occupies: visibleShare 0.0006. The baseline hero and the stump-hidden hero are identical, and the brown sliver at its location appears in BOTH, so it is not the stump. Checked backwards across napkin41 (3.2%) and napkin43-50 (0.1%): it was never substantially visible. This card passed on 'elliptical cut face with growth rings resolved' and 'contact continuous' — form criteria judged on a picture in which the object is not separable. Those rulings are not reproducible and the card cannot stand on them. Its measured width (0.920 m vs a 0.914 m callout) and X centroid (+0.0089) are unaffected and stand; only the form ruling is withdrawn. Stated limit: the mask threshold is |dRGB|>24 of 765, so a low visibleShare means 'not separable in this frame' rather than strictly hidden — for a FORM ruling those are the same failure."
    },
    {
      "id": "split-rock",
      "name": "Split Rock",
      "role": "Twin spires, left of center",
      "state": "failing",
      "stateLabel": "Reverted Jul 30 — built 11x too big against its own 18-foot callout",
      "evidence": "REVERTED by supervisor call. The card passed on left-right position and peak placement, which were real criteria honestly applied. But Adam's contract asks for position, scale AND orientation, and scale was never once measured on this card. Adam's own 18-foot arrow, re-read off the ink at 7x with its top tick level with the spire tip, dimensions this rock at 5.49 m. It is built at 60 m. That is nearly eleven times oversize, and in the picture it fills 1.41x the height Adam drew. Its left-right ruling still stands and is not withdrawn; its size was never ruled and cannot be claimed.",
      "next": "Pass = position, scale, and orientation line up decently with the v11 sketch AND a roast-style review finds no common-sense visual/physical errors (contact, support, scale, shadows). Built ~75 m tall against the sketch's 18 ft; position passes but scale is ~13x the contract.",
      "note": "The scan replaced the impossible blade spires; believability and the position gate now hold together.",
      "image": "/demo-base/landmarks/split-rock.jpg",
      "sketch": "/demo-base/landmarks/split-rock-sketch.jpg",
      "thumb": "/demo-base/landmarks/split-rock-thumb.jpg"
    },
    {
      "id": "rock-outcrop",
      "name": "Rock Outcrop",
      "role": "Slanted granite overhang between the Lookout and Spring Pool",
      "state": "blocked",
      "stateLabel": "Failing — sketch match + roast pending",
      "evidence": "The slanted granite overhang is clear between Lookout and Pool. Size: 0.41%; minimum: 0.30%.",
      "next": "Pass = position, scale, and orientation line up decently with the v11 sketch AND a roast-style review finds no common-sense visual/physical errors (contact, support, scale, shadows). ~2x sketch scale; bedding orientation vs sketch dip unverified.",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "image": "/demo-base/landmarks/rock-outcrop.jpg",
      "sketch": "/demo-base/landmarks/rock-outcrop-sketch.jpg",
      "thumb": "/demo-base/landmarks/rock-outcrop-thumb.jpg"
    },
    {
      "id": "sapling",
      "name": "Sapling",
      "role": "Nearest tree on the right side — about 9 feet, labeled on the v12 sketch",
      "state": "passing",
      "stateLabel": "Passing — right size, right place left-to-right, and now actually visible",
      "evidence": "Ruled Jul 30 15:50 HST on the capture's own measurements. It had been standing 92 m from the camera when Adam's 9-foot arrow puts it at about 15 m; moved to 15.84 m it grew thirty times bigger on screen and went from failing the visibility floor outright to clearing it fourteen times over. It is exactly 2.743 m tall against the 9-foot callout, fills 179 pixels where the drawing asks for 186, and sits 0.003 off its drawn left-right position — tighter than any other card. Two honest blemishes on record: a foreground bank hides the bottom third of the trunk, so ground contact is proved from the build's own seating measurement rather than from the picture, and the tree reads about as tall as the flowers around it, which may just be perspective and is flagged rather than counted against it.",
      "next": "Pass = a distinct ~9 ft sapling at the sketch position, right side, scale true against the Hiker, roast clean (rooted, contact shadow, no clone of other trees).",
      "image": "/demo-base/landmarks/sapling.jpg",
      "sketch": "/demo-base/landmarks/sapling-sketch.jpg",
      "thumb": "/demo-base/landmarks/sapling-thumb.jpg"
    },
    {
      "id": "old-log",
      "name": "Old Log",
      "role": "Fallen trunk across the foreground",
      "state": "blocked",
      "stateLabel": "Failing — back in frame at sketch proportion",
      "evidence": "Slid onto the terrace band and rescaled 13 m → 5 m against the 1.83 m hiker (Jul 29, six iterations). Lies right of the stump with the root wad clear of both figures; underside contact reads clean on the crest. Remaining roast items: root spikes overlap the stump's box edge, and the far tip's contact needs a zoomed pass.",
      "next": "Pass = position, scale, and orientation line up decently with the v11 sketch AND a roast-style review finds no common-sense visual/physical errors (contact, support, scale, shadows). Position passes; needs roast pass (contact along full length, bark scale vs 6' hiker).",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "image": "/demo-base/landmarks/old-log.jpg",
      "sketch": "/demo-base/landmarks/old-log-sketch.jpg",
      "thumb": "/demo-base/landmarks/old-log-thumb.jpg"
    },
    {
      "id": "spring-pool",
      "name": "Spring Pool",
      "role": "Small foreground pond",
      "state": "blocked",
      "stateLabel": "Failing — sketch match + roast pending",
      "evidence": "A bounded blue oval is visible in the lower-right foreground. Size: 2.24%; minimum: 0.50%.",
      "next": "Pass = position, scale, and orientation line up decently with the v11 sketch AND a roast-style review finds no common-sense visual/physical errors (contact, support, scale, shadows). Water surface not visible from the hero; built 12 m wide against the 9 ft contract.",
      "note": "napkin39 cycle 16 (2026-07-28): kit-measured centroid within the 5% screen gate. Position leg passes; distance/size/orientation still partly by-construction pending a full physical-leg attestation.",
      "image": "/demo-base/landmarks/spring-pool.jpg",
      "sketch": "/demo-base/landmarks/spring-pool-sketch.jpg",
      "thumb": "/demo-base/landmarks/spring-pool-thumb.jpg"
    }
  ],
  "queue": [
    {
      "order": 0,
      "state": "now",
      "startedAt": "2026-07-30T12:36:53Z",
      "title": "Lookout to its 30-foot contract — grounded, human-scaled, climbable",
      "why": "Adam's work order puts the Lookout right after the passed Hiker. Three defects from the roast: vista-scale tower (about 2x the 30-foot contract), no stair or ladder to the cab, and the perfect-cone hill silhouette. The per-foot leg seat already landed; this item rebuilds the tower at 30 ft ground-to-rooftop with a visible way up, on a summit that reads like terrain.",
      "done": "Tower measures 30 ft against the Hiker anchor, all four feet seated with contact shadows, a stair or ladder reaches the cab, hill silhouette de-coned, roast clean, gates hold."
    },
    {
      "order": 0,
      "state": "next",
      "startedAt": "2026-07-30T12:29:43Z",
      "title": "Trail re-thread to Adam's green route",
      "why": "Adam marked the trail's exact route on the sketch in green: upper-left entry, left-edge sweep behind the Hiker, foreground crossing under the Old Log, bottom-right exit — one continuous 3-foot ribbon. The built trail is at contract width but does not thread this route through the foreground.",
      "done": "Hero shows one continuous trail on the green route at 3-foot width, roast clean (reads as walked ground, no floating edges, crosses under the log believably), gates hold."
    },
    {
      "order": 0,
      "state": "next",
      "startedAt": "2026-07-30T04:49:32Z",
      "title": "POOL-03: authored basin (paused — Adam moved the trail ahead of it)",
      "why": "POOL-01 proved additive terrain ops cannot level a slope — eight iterations, honest revert. POOL-02 builds the basin as an authored set-height sculpt so the intimate 9-ft pool holds water the camera can see. The stump asset upgrade rides behind it.",
      "done": "Pool surface visible in the hero at the sketch position, sealed below its lip, roast clean, gates hold."
    },
    {
      "order": 1,
      "state": "done",
      "title": "Hiker to sketch scale — PASSED (first landmark through the new bar)",
      "why": "Adam's overlay ruling: the scene hiker reads a third of his sketch size. He is the 1.83 m scale anchor everything else hangs off, so he lands first. Config staged: exactly 1.83 m, moved from 24 m out to about 7 m in the left foreground, walking away toward Split Rock. The capture also carries the tower per-foot leg seat as a declared compound (two spatially disjoint fixes, one scarce license seat). Blocked only on a free Cedar seat; retrying every 4 minutes.",
      "done": "Landed 15:32 HST: 1.83 m at 7 m on a rocky rise, head 0.45/feet 0.79 vs target 0.47/0.78, contact shadows, roast clean.",
      "startedAt": "2026-07-29T19:24:00Z"
    },
    {
      "order": 2,
      "state": "then",
      "title": "Stump to its green target — and it becomes the scene origin",
      "why": "Adam's ruling: the sketch stump's position and size are right — hero-frame x 0.44-0.51, y 0.58-0.68, exactly 3 feet wide. Its point becomes the coordinate origin for the intimate rebuild; every landmark offset gets expressed from the stump. The current stump already sits inside the green box in frame position; the rebuild slides it from 35 m to about 9 m so its drawn size fills the target.",
      "done": "Stump seated at the target box at 3 ft wide, roast-clean; stump card passes and the rebuild's coordinate frame anchors on it."
    },
    {
      "order": 3,
      "state": "then",
      "title": "Tower legs: all four feet on the ground",
      "why": "Two downhill legs float. Root cause found in code: the seat sampled an axis-aligned 4.5 m grid, but the real feet stand 6.46 m out and yaw-rotated. The fix (per-foot ground sampling + leg extension) is written, compile-checked, and synced; it rides the same capture as the hiker.",
      "done": "Zoomed lookout crop shows four feet touching with contact shadows; lookout card advances under the new bar."
    },
    {
      "order": 4,
      "state": "then",
      "title": "Trail to its 3-foot width",
      "why": "The only remaining contract dimension fixable without the rebuild: 0.7 m today vs the sketch's 0.91 m.",
      "done": "Trail reads 3 ft against the hiker in the hero; trail card advances."
    },
    {
      "order": 5,
      "state": "then",
      "title": "Intimate rebuild: the ray-slide arc",
      "why": "Adam ruled: every landmark at its literal sketch dimension. The plan is written (INTIMATE-REBUILD.md): each landmark keeps its camera ray and slides inward to the distance its real size implies — spires 133 to 16 m, pool to 9 m, outcrop to 26 m, lookout to about 130 m — with gates, floors, and score history re-frozen on the new stack. Phases I1-I6, one variable per capture, roast on every claim.",
      "done": "All 8 cards pass sketch-match + roast at the intimate scale; realism at or above 80 twice on the re-frozen instrument."
    }
  ],
  "updates": [
    {
      "id": "dither-two-mechanisms-ruled-out",
      "date": "Jul 30",
      "time": "15:25 HST",
      "status": "progress",
      "title": "The stipple all three judges saw is real. Their explanation for it is not",
      "detail": "Three blind judges independently reported a repeating cross-hatch stipple across the midground and all three said it was LOD or alpha fade. We checked the observation first, against something other than their words: matching their zoomed crop back into the picture locates the band exactly, and the pattern there repeats every 2.1 to 2.6 pixels where two unflagged control patches of the same terrain repeat every 3.3 to 6.7. The artifact is real. Then we tested their explanation, one mechanism at a time. Tree billboards: ruled out from the settings, they only start at 600 metres and this band is at 135. Terrain grass: we deleted all of it — the grass was definitely there, it accounted for most of the pixels that changed, and the stipple did not move at all. LOD cross-fade: we added a switch for it, confirmed in the engine log that it was on and that we turned it off, and the picture came back unchanged to within 2 units of 255. Both of our own predictions were wrong and both are written down that way. The likely answer was in a line every capture has printed all along: these frames render with anti-aliasing unavailable. A regular pattern this fine on terrain seen at a shallow angle is aliasing, not a dither. Neither test frame was promoted. No card moved; still 2 of 9.",
      "image": "/demo-base/roast/skyfill01-dither-8x-after.png"
    },
    {
      "id": "skyfill-promoted-head",
      "date": "Jul 30",
      "time": "15:10 HST",
      "status": "progress",
      "title": "The dark foreground is fixed, and that frame is now the one on this page",
      "detail": "For five straight readings blind judges called the bottom of this picture dark, muddy and unreadable. One lighting field — HDRP's indirect diffuse multiplier, wired into our capture kit, defaulted to untouched, never once set — was raised from the scene's authored 1.1 to 3.3. The judged foreground went from 32.9 to 58.9 out of 255 in average brightness and its local detail contrast rose 82%. The check written specifically to catch a washed-out, milky result went the other way: the midground got 12% MORE contrast, not less. 89% of the picture changed against a repeatability floor of 5.2%. Three fresh blind judges then read it and not one of them mentioned darkness. That frame has now been promoted: it is the hero on this page, the three judged views, and the landmark crops, all regenerated from it. The honest caveat: the score did not move, and was never going to. Brightening a surface does not add geometry, and the judges now name the smeared foreground material the darkness was hiding. That is a better problem than a black region nobody could diagnose.",
      "image": "/demo-base/roast/skyfill01-before-after.png"
    },
    {
      "id": "survivor-audit",
      "date": "Jul 30",
      "time": "14:30 HST",
      "status": "progress",
      "title": "We checked the two cards still standing. Both are real — no third one falls",
      "detail": "After losing the Stump we went back and tested the survivors rather than waiting to be corrected. First thing we found: the Hiker had never been measured by anything. He was deliberately excluded from the landmark checks so he could act as the scale reference for every other landmark without skewing their position tests — correct for that purpose, but it meant card 1's ruling rested entirely on the eye and hand-drawn rectangles, exactly the basis that just cost us two cards. We added him to the measurement properly, using the same threshold as the Lookout and Sapling so the reliability gate is unchanged. Result: the Hiker is 87.9% visible, the most visible object in the whole scene. In the picture he is unmistakable — backpack, jacket, boots, mid-stride — and switching him off leaves the bush behind him. Card 1 is solid. The Sapling reads 12.7% on the number, but the picture shows a young conifer standing clearly on the bank, and switching it off removes it. That gap is expected and the instrument predicts it: a tree moving in the wind partly hides itself from a measurement built on comparing frames. So we are keeping the Sapling, and recording that the number is a floor, not a verdict. This does not rescue the Stump or Split Rock — those are rock and wood that do not move, and their frames are pixel-identical whether they are switched on or off. The rule we are taking forward: never fail a card on the number alone, fail it on the number AND the picture, the way the Stump was."
    },
    {
      "id": "honest-standing",
      "date": "Jul 30",
      "time": "14:35 HST",
      "status": "blocked",
      "title": "Where this actually stands, without softening",
      "detail": "Two of nine landmark cards. Under three days to the deadline. Zero of the two required realism readings have ever been attempted, so that half of the contract is entirely unstarted. Both of the remaining ground problems — the missing mid-ground shelf that puts everything too low in frame, and the ridge hiding Split Rock — are terrain-shaping calls that no setting we can change reaches, and both are waiting on Adam. What we gained today is that the scoreline is now trustworthy: the measurement behind it was wrong, it is fixed in the capture kit rather than patched in a note, and every card has been re-checked against it. Two cards that are true is a better place to work from than four that were waiting to be corrected."
    },
    {
      "id": "stump-reverted-not-in-frame",
      "date": "Jul 31",
      "time": "07:30 HST",
      "status": "blocked",
      "title": "The stump was never in the picture — card four reverted, and the instrument that hid that is fixed",
      "detail": "The measure of how much of a landmark you can actually see was broken. It divided a count of pixels that changed anywhere in the frame by a count of pixels belonging to the object, which are two different regions, so a landmark's own cast shadow and bounced light counted as the landmark being visible. Repaired to intersect the two masks, and re-derived for all nine landmarks. The result is hard: hiding the stump changes three of the five thousand pixels it occupies. The hero with the stump and the hero without it are identical. Card four had passed partly on its cut face and its ground contact being judged on the picture, and those judgements are not reproducible on any frame we have. Reverted. Its measured width and horizontal position are unaffected and stand. Split Rock is three pixels visible for the same reason. Everything embedded in the terrain sits at or under three percent visible, while the lookout against open sky sits at forty-nine. Two of nine."
    },
    {
      "id": "visibility-metric-fixed",
      "date": "Jul 30",
      "time": "13:35 HST",
      "status": "blocked",
      "title": "We fixed the instrument that measures how much of each landmark you can see — and seven of the nine are essentially not in the picture",
      "detail": "The old figure divided a count taken across the WHOLE picture by a count taken only where the object is. Two different areas in one fraction, so an object's cast shadow was being counted as sightings of the object. It has fed every visibility number this campaign has quoted. It is now fixed in the capture kit: a pixel counts only where the landmark IS and where switching the landmark off actually changed the picture. The old value is still printed beside the new one, and the background noise level (0.5% of frame) now sits next to every figure so nobody mistakes floor for signal. We re-ran the scene with NOTHING else changed as a control, and every other measurement came back identical — so the fix moved the ratio and nothing else. The new table: the Lookout, the only landmark standing against open sky, is 49% visible. The Hiking Trail is 14%. Everything sitting in terrain is at or under 3.4%: Old Log 3.4%, Spring Pool 1.9%, Rock Outcrop 1.0%, Split Rock 0.01%, and the Stump 0.06%. The Stump is the hard part: it is a card we count as PASSING, and switching it off changes 3 of the 5,115 pixels it occupies. The brown object visible at that spot in the picture is in the frame whether the stump is switched on or off, so it is not the stump. Checked backwards through earlier runs: the stump was never more than 3.2% visible. We are not reversing the pass inside an instrument audit, but it has to be re-judged before the board counts it. One caveat we are stating rather than burying: an object that is present but exactly the same tone as what is behind it also reads as invisible here, so a low number means 'cannot be picked out in this frame' rather than strictly 'hidden'. For judging whether a landmark looks right, those are the same problem."
    },
    {
      "id": "split-rock-to-adam",
      "date": "Jul 30",
      "time": "13:40 HST",
      "status": "blocked",
      "title": "One decision for Adam, not two: his drawn ground and our terrain disagree in two places, and no setting we can change reaches either",
      "detail": "These have been two separate open questions. They are one. First: everything in the scene sits lower in the frame than it does in the sketch, because the drawing has a raised mid-ground shelf our terrain does not have — correcting distances made it worse, twice, exactly as predicted beforehand. Second, found today: Split Rock is hidden behind a ridge of ground about 2 m higher than the base of the rock, sitting between the camera and it. We measured the clearance needed to show half the rock: 2.12 m. Every seating adjustment available adds up to 1.47 m, and the one remaining trick adds 0.87 m at the cost of unseating the rock's debris field. Neither reaches it. Both problems are the same shape — the ground in the drawing and the ground in the scene are different ground — and both need a call from Adam on whether we reshape terrain to match the drawing. Stopping work on Split Rock until that comes back. Two things recorded alongside it: the rock's own asset is excellent, a crisp deeply cracked twin-spire formation with an obvious split when rendered on its own, so the three 'add more surface detail' ideas are dead — nothing is reaching the picture to be blurry, and nobody should revive them. And there is a 40 m tall mound still in the scene built to hold Split Rock, 113 m from where the rock now stands and behind it, holding nothing."
    },
    {
      "id": "occlusion-metric-wrong",
      "date": "Jul 30",
      "time": "12:55 HST",
      "status": "blocked",
      "title": "The rock we have been trying to sharpen is not in the picture at all — and the number that said it was two-thirds visible was measuring its shadow",
      "detail": "For three sessions we believed Split Rock was about a third visible and just looked soft, so we chased its material: texture detail, bump strength, blur settings. Today we checked the number itself. The visibility figure divides a count taken across the WHOLE picture by a count taken only where the rock is — two different areas in one fraction. Redone properly, switching the rock off changes 3 pixels out of the 45,169 it occupies. It is essentially completely hidden. The 'not enough surface detail' finding was measuring the hillside standing in front of it, and it is withdrawn; when we render the rock on its own it is a crisp, deeply cracked twin-spire formation with an obvious split. The asset was never the problem. We then ran the one-word fix that was queued — sitting the rock on the high point of its footprint instead of the low one. It lifted the rock by exactly the 0.45 m we predicted, to the pixel, and it was still not enough: the rock now peeks 38 pixels above the ridge in front of it instead of nothing. Reverted, as the pre-registered rule required. The null was worth more than a pass would have been, because it locates the real obstacle: there is a ridge of ground about 2 m higher than the base of the rock sitting between the camera and it, and we now know we need 2.12 m of clearance to show half the rock. Seating tweaks can only buy 1.5 m total, so this is a ground-shaping decision, not a rock decision. Same shape as the vertical problem already waiting on Adam. Still 3 of 9 cards."
    },
    {
      "id": "sightline-eliminated",
      "date": "Jul 30",
      "time": "16:15 HST",
      "status": "blocked",
      "title": "The leading explanation for the unexplained picture is wrong — one capture killed it, and that is the test doing its job",
      "detail": "We thought the scene going bare might be caused by a setting that clears a corridor of trees between the camera and the rock, dragged into the foreground when the rock moved from 130 m to 17 m. It explained all three oddities with one mechanism, which is exactly why it was worth one capture. It is wrong. Turning the setting off changed nothing at all — every measurement came back identical to the last digit and the picture is indistinguishable. The bare ground, the missing meadow and the unidentified boulder in the corner are all still there and still unexplained, so the Split Rock card stays failing and the score stays 3 of 9. Next step is to stop theorising and establish what actually changed: a proper side-by-side of the scene from forty minutes earlier against the scene now. We inferred the ground-cover change by eye from two pictures taken apart, and that comparison itself has never been done properly. One thing is worth keeping regardless of what the cause turns out to be: a setting that changes the world around an object is not independent of where that object is. Move the object and you move its effect — and none of that shows up when you compare two config files.",
      "evidence": "Artifacts/napkin44-splitrock-nosightline/scene-report.json, generatedUtc 2026-07-30T22:00:07Z — identical to napkin43."
    },
    {
      "id": "splitrock-size-depth-not-ruled",
      "date": "Jul 30",
      "time": "16:05 HST",
      "status": "blocked",
      "title": "Split Rock rebuilt to Adam's 18-foot callout in two clean steps — every number came out right, and I am still not calling it passing, because I cannot explain the picture",
      "detail": "The biggest defect on the board was that we built a 60 m mountain where Adam drew an 18-foot rock. It is now rebuilt, in two separate runs so we can tell which change did what. FIRST, size alone. Shrinking one number would have been two changes in disguise, because it would have left an 8 m gap between the two spires and a 6 m rubble skirt around a 5.5 m rock, flying the formation apart. So the whole formation was scaled by one factor, shape exactly preserved. We predicted in writing that this alone would make things look WORSE - a correctly sized rock still 130 m away nearly vanishes - and it did, exactly as written. SECOND, distance alone: 129 m in to 17 m, along the same line of sight so the left-right position could not drift. That worked too. The rock is now 0.97 of the height Adam drew it, sits within the left-right tolerance every passing card has met, and its outline clears the visibility floor twelve times over. Nothing else in the scene moved by more than 0.0005. BUT I AM NOT CALLING THE CARD PASSED. I looked at the resulting picture and three things in it do not add up. The rock is not visible at the spot its own measurements say it occupies. The ground cover across the near and middle of the scene, lush green with flowers and a visible trail forty minutes ago, is now bare sand. And a large smooth boulder now fills the bottom-right corner, far bigger than anything the rock's own measurements account for. A change to the rock alone should not be able to do any of that. The likely culprit is a setting that clears a corridor of trees between the camera and the rock: moving the rock from 130 m to 17 m drags that corridor from the far distance into the foreground, which would be a second change riding along invisibly on the first. That is the next thing to test. Nothing has been reverted and nothing promoted; the previous scene is untouched and the score stays at 3 of 9. The lesson is one this campaign keeps paying for: the numbers were clean, predicted in advance, and all came true, and the run still is not creditable, because the picture shows a scene I cannot explain. The picture outranks the number - including when the number is mine and it agrees with me.",
      "evidence": "Artifacts/napkin42-splitrock-size and Artifacts/napkin43-splitrock-depth scene reports, generatedUtc 2026-07-30T21:54:22Z and 21:55:46Z. Proof: /demo-base/roast/splitrock-depth02-unexplained-frame.png"
    },
    {
      "id": "sapling-02-passes",
      "date": "Jul 30",
      "time": "15:50 HST",
      "status": "improved",
      "title": "The sapling passes — moving it from 92 m to 15 m made it thirty times bigger on screen, and the prediction that this would make the vertical problem WORSE came true",
      "detail": "The fix worked and the card closes. Everything predicted in advance held: the tree now stands 15.84 m from the camera where Adam's 9-foot arrow puts it at about 15 m, its outline grew thirty times and clears the visibility floor fourteen times over, it is exactly 2.743 m tall, it fills 179 pixels of the 186 the drawing asks for, and it sits 0.003 off its drawn left-right position, which is the tightest of any card so far. THE PART THAT MATTERS MOST IS THE PART THAT GOT WORSE. We predicted in writing, before the run, that pulling the tree closer would push it LOWER in the frame and make the vertical miss worse, because the ground falls away from the camera. It did: the vertical error went from 0.08 to 0.33. That is the scene-wide vertical fault confirmed on a live run rather than argued from a model, and it is the strongest evidence yet that Adam's decision — change the camera aim, or sculpt the raised middle ground the sketch shows — is genuinely needed and cannot be worked around. TWO HONEST BLEMISHES, both on the record: a foreground bank hides the bottom third of the trunk, so we prove the tree is standing on the ground from the build's own seating measurement rather than from the picture, and we say so rather than claiming we can see it; and the tree reads about as tall as the flowers around it, which may be nothing more than those flowers being nearer the camera, so it is flagged and not counted against the card. Also disclosed: our own rejection rule said the run was void if any other landmark shifted at all, and the spring pool's reading moved by 0.0065. We are not voiding it — the pool is animated water and that is measurement noise, and a config comparison proves nothing about the pool changed — but the rule was written stricter than any real measurement can be, and it is being fixed rather than quietly ignored.",
      "evidence": "Artifacts/napkin41-sapling-02/scene-report.json, generatedUtc 2026-07-30T21:47:23Z. Proof: /demo-base/roast/sapling02-at-15m-zoom.png"
    },
    {
      "id": "scale-ruled-two-cards-reverted",
      "date": "Jul 30",
      "time": "15:20 HST",
      "status": "regressed",
      "title": "Scale measured for the first time on all four passing cards — two of them fail, and the score drops from 4 of 9 to 2 of 9",
      "detail": "This is a supervisor's call and it costs us visible progress with three days left. Adam's contract asks that position, scale and orientation line up with the sketch. The depth audit exposed that scale had never been measured on any card that we were calling passing. A card that satisfies two of three axes and has never been checked on the third is not a card we can call passing, so we measured all four and reverted what failed. FIRST, every dimension arrow was re-read off the ink itself rather than off a hand-drawn box — this campaign has now been burned twice by measuring a box instead of an arrow. Isolating the red ink and measuring the arrows directly settled it: three of the seven boxes were off by 8 to 22 percent, and the Lookout's box was the worst, 22 percent short. THE RESULTS. Hiker: 1.83 m against a 6-foot callout, and it fills 94 percent of its drawn height. Passes, stands. Stump: 0.920 m against a 3-foot callout, filling 112 percent. Passes, stands. Lookout: the tower is 9.14 m against a 30-foot (9.144 m) callout, which is right — but it stands at 293 m where the drawing puts it at 136 m, so in the picture it is only 46 percent of the height Adam drew. Reverted. Split Rock: built at 60 m against an 18-foot (5.49 m) callout. Nearly eleven times oversize, filling 1.41x its drawn height. Reverted. WHAT IS NOT WITHDRAWN: both reverted cards passed on left-right position and peak placement, those were honest measurements, and they still stand. Only size and distance failed, and those were simply never ruled. Adam has reverted a card himself for exactly this reason. Three true cards are worth more than five flattering ones.",
      "evidence": "Arrow spans measured by isolating the red dimension ink on napkin-composition-v12-labels.png and connected-component analysis; split-rock arrow tip confirmed against the spire at 7x. Built sizes from PortableCaptureKit.napkin39-full-composition.config.json. Depths from the attested scene-report.json, generatedUtc 2026-07-30T21:21:50Z."
    },
    {
      "id": "depth-audit-all-landmarks",
      "date": "Jul 30",
      "time": "14:35 HST",
      "status": "regressed",
      "title": "Every landmark's distance re-checked against Adam's dimension lines — five of seven are placed far too far away, and it does NOT let us off the vertical-miss hook",
      "detail": "The sapling was found to be six times too far from the camera because its distance had been guessed from how high up the page it was drawn — the one measurement on this sketch we already know is broken. So I re-checked every other landmark the same honest way: work the distance out from Adam's own dimension arrow and how much of the frame that object should fill, and compare with where it actually stands. Five of seven are wrong, several of them badly: Split Rock sits 130 m out where the 18-foot callout puts it at 18 m, the Spring Pool 74 m out where its 9-foot callout puts it at 8 m, Rock Outcrop 90 m against 26 m, the Lookout 293 m against 175 m. Only the Hiker (10% out) and the Stump (12% out) are honest. And because the objects were then scaled up to fill their drawn boxes, Split Rock is now built 77 m across against an 18-foot line and fills twice the height Adam drew. That is a real defect in cards already called passing. THE PART THAT HURTS: I hoped this would explain away the scene-wide vertical miss and save Adam a decision. It does not. The ground falls away from the camera, so bringing an object CLOSER pushes it LOWER in the frame, which is the wrong direction — every landmark I checked gets worse on the vertical axis when moved to its correct distance, not better. The vertical shortfall is genuinely structural, the terrain really is missing the raised middle ground Adam drew, and his open decision stands. Fixing the distances is still necessary and still worth doing; it just is not the free win I was hoping for.",
      "evidence": "Attested scene report Artifacts/napkin39-full-composition/scene-report.json, generatedUtc 2026-07-30T21:21:50Z; dimension spans from apps/forgescene/data/sketch-landmark-boxes.json; ground profile from Artifacts/napkin-probe.json centre ray."
    },
    {
      "id": "sapling-ruled-fail",
      "date": "Jul 30",
      "time": "13:40 HST",
      "status": "regressed",
      "title": "The sapling card is ruled, and it FAILS — it was put six times too far away, and the reason is a mistake worth more than the card",
      "detail": "Card seven is ruled on the capture's own measurements, not on a fit, and it does not pass. Three separate things fail and any one of them is enough. The tree is too small to count as visible at all: it covers 277 pixels where the floor is 576, and that particular test is one-sided, meaning it measures the most the tree could possibly show with everything blocking it removed, so falling short is final and no argument about what is in the way can rescue it. Its horizontal position is out by more than double the tolerance every passing card met. And it stands 31 pixels tall where Adam's nine-foot arrow asks for 183. Four of nine still stands. The cause is the useful part. The tree was placed 92 metres from the camera when the drawing calls for 15.5 - six times too far. It got there because its distance was guessed from how high up the page Adam drew it, and how high up the page things sit is exactly the one measurement this project already knows is broken, because the ground falls away where the sketch has a shelf. The fix is a rule that applies to every card left: work out how far away something belongs from its dimension line and how big it should look, never from its height on the page. That rule was checked against two cards that already passed before being trusted with a third. It predicts the hiker's distance within 9 per cent and the stump's within 15. It puts the sapling out by 492 per cent, which is not a tolerance question but a different kind of error. Also recorded honestly: the run overwrote the previous experiment's output folder because its label was never changed when the config was copied. The measurements are the right ones, but the folder name now lies, and the next run needs its own label.",
      "evidence": "/demo-base/roast/sapling-ruled-fail-too-far.png"
    },
    {
      "id": "sapling-staged-and-the-sixth-bad-number",
      "date": "Jul 30",
      "time": "12:55 HST",
      "status": "done",
      "title": "The sapling stands in the scene at exactly nine feet — and its first log lied about how wide it is",
      "detail": "The sapling now stages. It stands 2.743 m, which is its nine-foot callout to the millimetre, on a ground seat taken from twenty-five samples rather than a single point, with its root flare buried. That is the first time this landmark has existed at all. It is NOT being called a pass. Its position came from a fit to the five landmarks already measured, and that fit is only good to about 0.023 of frame width, which is the same size as the tolerance a card passes on, so it puts the tree in the right region and settles nothing. The ruling has to come from the capture's own measurement of where the tree actually landed, and that has not been read yet. The more useful result is a mistake. The same log reported the crown as 1.039 m wide. It is 0.736 m. The measurement was taken after the tree had been turned 27 degrees, and the box it measures is always square to the world, so it had been reporting the box's DIAGONAL as the width - a 35 per cent inflation. That is the sixth number this campaign has had to withdraw and the second time a box was mistaken for a measurement. It was caught before it ruled anything. It then raised a fair worry: the stump passed on a width, measured the same wrong way, with a 190 degree turn applied. So that was measured too. The stump is fine - its turn changes its box by 0.7 per cent, giving 0.920 m against a 0.914 m contract. The reason is worth keeping: a turned box only inflates badly when the shape is nearly square, and the stump is an irregular scan while the sapling is almost exactly square. Separately, the pool's and outcrop's dimension lines were finally read at magnification. Both are horizontal. Neither card's box height is a size, and both must be ruled on width and horizontal position alone.",
      "evidence": "/demo-base/roast/sapling-asset-screen.png"
    },
    {
      "id": "sapling-builder-landed",
      "date": "Jul 30",
      "time": "12:20 HST",
      "status": "done",
      "title": "The sapling now exists as a landmark at all — it was not unstarted, it was unbuildable",
      "detail": "Card 7 had been carried on the board as 'not started'. That was the wrong description. The placement kit contained no sapling anywhere, and neither the capture kit's landmark list nor the report's landmark list carried the identity, so nothing in the scene could be measured against Adam's box even if a tree had been put there. All three now carry it. The builder is shaped after the scanned-stump builder and differs in exactly two ways, both forced by the drawing rather than by taste. It scales from HEIGHT and uniformly, because unlike the stump's 3'0\" width line the 9'0\" callout here is a true vertical dimension; the crown width that falls out is measured and reported, never forced, since stretching one axis was already judged and reverted on the stump for wrecking every feature with a fixed real-world size. And it sinks, seating on the STEM's footprint rather than the crown's, because a sapling stands on the ground where a stump merges into it. The 0.10 m sink is measured, not guessed: the radius profile of the converted mesh puts the root splay in the bottom five per cent of its height, so the sink buries about three quarters of the flare and leaves the rest showing, the way a real stem enters soil. One number is deliberately NOT being claimed. The world position for the first capture was solved from a fit to the five landmarks already attested, and that fit is only accurate to about 0.023 of frame width, which is the same size as the tolerance a card passes on. So it will put the tree in the right region and nothing more; the X ruling has to come from the capture's own attested centroid. Capture SAPLING-01 running now.",
      "evidence": "/demo-base/roast/sapling-asset-screen.png"
    },
    {
      "id": "sapling-asset-screen",
      "date": "Jul 30",
      "time": "11:35 HST",
      "status": "done",
      "title": "Card 7 sapling: both catalogue assets refused on the picture, and one of them is not a sapling at all",
      "detail": "The handoff pointed at two Meshy assets in the ForgeMedia catalogue as the sapling's source. Both were downloaded and rendered before any engine cycle. ASSET_PINE_SAPLING_01 (GAME-READY 10K) is not a tree: it is a cluster of three pine CONES lying on a patch of grass. It is misnamed in the catalogue and nothing but looking at it would have caught that, because on numbers alone it just reads as a wide, bushy object. The Conifer Sapling 10K is a real conifer but a squat one, 1.41 times taller than wide, with no bare lower trunk. Adam's ink asks for a slender spire: the 9'0\" arrow was re-measured from the ticks at six times magnification and spans 179 native pixels, which fixes 2.743 m and a scale of 0.0154 m per pixel, and makes the drawn tree roughly 4.3 times taller than its crown is wide. The asset that fits was already in the repository and nobody had looked: young-lodgepole-12k-1k.glb in Assets/SourceModels/ForestKit, 3.55 times taller than wide, with a clean bare trunk and root flare at its base. Third time this campaign that inventory beat acquisition. No download, no Meshy roll, no Sketchfab pipeline. Next: write BuildSapling, which does not exist yet in the placement kit.",
      "evidence": "/demo-base/roast/sapling-asset-screen.png"
    },
    {
      "id": "stump-ruled-passing",
      "date": "Jul 31",
      "time": "04:05 HST",
      "status": "done",
      "title": "The stump passes — and it passed by correcting our own reading of the drawing, not by finding a better asset",
      "detail": "Card four is closed. For three days the hunt was for a stump about as tall as it is wide, because the sketch box looked square. Read at six times magnification, the box turns out to stack three different things: the cut face seen from slightly above, which is a flat disc in perspective rather than any height at all, the actual side wall, and roots splaying outward. Measured against Adam's own three-foot arrow the drawn stump stands about a foot tall. Every asset we rejected for being wide and low was right, and the standard was wrong. The one that passes is a scanned stump with its turf disc trimmed away in Blender, placed at its natural proportions: width exactly on the callout, sitting nine thousandths of a frame from where Adam drew it, elliptical cut face with growth rings visible, contact continuous and its shadow falling the same way as the hiker's. Root entry is honestly not claimed, because at thirty pixels wide nobody could disprove it. Four of nine cards now passing."
    },
    {
      "id": "card4-ruled-pass",
      "date": "Jul 30",
      "time": "16:05 HST",
      "status": "accepted",
      "title": "Stump card passes - the fourth landmark to clear, and the first since we started measuring against Adam's boxes",
      "detail": "With the invented height requirement gone, the stump was measured against what Adam actually dimensioned. It is three feet across, matching his only callout on it. Its side-to-side position is within a hundredth of the frame of where he drew it, better than the Split Rock card that set the standard. Zoomed in, it shows the same thing he drew: an oval cut top with growth rings, a short wall beneath, and a cast shadow falling the same way as the sun everywhere else in the picture. It sits on the ground with no gap. One thing I will not overclaim: at this distance the stump is about thirty pixels wide, so I cannot see the roots entering the soil in the judged frame. I confirmed those on a close-up render of the asset itself, and I am recording it that way rather than pretending the shot shows it. Vertical position is still wrong, and that is the scene-wide fault every landmark shares, so it is flagged rather than charged to this card. Four of nine.",
      "image": "demo-base/roast/card4-ruled.png"
    },
    {
      "id": "stump-height-my-error",
      "date": "Jul 30",
      "time": "15:10 HST",
      "status": "note",
      "title": "The stump was never supposed to be three feet tall. That was my mistake, and it cost the campaign three days",
      "detail": "I was challenged on whether the three-foot-tall requirement was ever Adam's, so I went back and looked at the actual drawing at high magnification. It is not his. Adam drew the stump from slightly above, so its cut top is an oval on the page. The box I have been treating as a height requirement bounds that oval, plus the short side wall beneath it, plus the roots splaying down and outward to the ground. Only the side wall is really height, and it is about a quarter of the box. The oval is the top of a flat disc seen at an angle, which is depth on the ground, not stature. Measured off the ink, the stump Adam drew stands roughly ten inches tall, not three feet. The only real dimension on it is the three-foot width, which I had right. So the eight stumps I measured were not all wrong; the drawing and the real world agree, and I was the one out of step. The asset we already have, at its own natural proportions, is the correct one. Card four's hunt for a taller stump is closed and should never have been opened.",
      "image": "demo-base/roast/stump-height-was-my-error.png"
    },
    {
      "id": "stretch-reverted",
      "date": "Jul 30",
      "time": "13:40 HST",
      "status": "reverted",
      "title": "I stretched the stump to make it three feet tall, then rendered it close up and took it back out",
      "detail": "Making the stump twice as tall closed the last size gap on paper, so I rendered it near the camera and looked at it properly instead of trusting the number. The bark itself survives the stretch, because the grain on this stump already runs up and down and longer fissures are what a taller trunk really looks like. What does not survive is everything with a natural chunkiness of its own. The broken root stubs around the base get pulled into thin spikes, and a bare pink scar on the trunk turns into a long streak. Those things do not get longer when a tree grows taller. At the distance Adam's picture actually shows the stump it is far too small to notice, which is exactly why it would have slipped through. So the stretch is out. The honest conclusion is not that the fit worked, it is that this stump is the wrong shape for the drawing: it is naturally two and a half times wider than it is tall, and Adam drew one about as tall as it is wide. That gives the asset hunt a precise target for the first time instead of a hunch.",
      "image": "demo-base/roast/stretch-near-camera.png"
    },
    {
      "id": "split-rock-y-caveat",
      "date": "Jul 30",
      "time": "13:40 HST",
      "status": "note",
      "title": "Split Rock stays passed, and here is exactly what its pass does and does not cover",
      "detail": "Now that we measure the up-and-down position too, Split Rock is off by seventeen hundredths of the frame on that axis. It is staying passed, and the reasoning belongs on the record rather than in a decision nobody can see. It was judged against the tests that were actually applied at the time: its side-to-side position, the height of its peak, and the split notch in its silhouette. It passed all three and it still does. The up-and-down miss is not something that card did wrong, it is the scene-wide fault that every landmark shares, and failing a card for a defect it does not own would make the record less truthful rather than more. The caveat is the thing to carry forward: no card has ever been judged on vertical position, and on the terrain as it stands today none of them could pass it.",
      "image": "demo-base/roast/composition-vertical-bias.png"
    },
    {
      "id": "stump07-contract-fit",
      "date": "Jul 30",
      "time": "12:35 HST",
      "status": "progress",
      "title": "Stump now stands three feet tall as drawn - two of its three faults are closed, the third is not mine to close",
      "detail": "Adam's drawn stump is three feet across and about three feet tall, and the scan is naturally much wider than it is tall, so no single scaling could satisfy both. The scene builder now supports stretching a stump upright to hit both numbers at once, and the stump is now three feet by three feet. In the picture it went from a wooden disc lying in the dirt to something with a visible side wall, a ring-marked cut top and a proper contact shadow, and it takes up twice as many pixels. Its width, its side-to-side position and its ground contact are all now correct. What remains is the vertical position, and that is the scene-wide fault reported earlier, not a stump problem - the ground along the camera's sightline slopes away, so no amount of moving the stump can lift it to where Adam drew it. One honest caveat: the upright stretch is two and a half times, and I have only confirmed it looks right at this distance. If the stump ever ends up near the camera, the bark will need looking at again.",
      "image": "demo-base/roast/stump07-contract-fit.png"
    },
    {
      "id": "composition-vertical-bias",
      "date": "Jul 30",
      "time": "12:05 HST",
      "status": "blocked",
      "title": "Found while failing the stump: the whole scene sits too low in the picture, and it is one fault rather than six",
      "detail": "Chasing why the stump landed in the wrong place, I read the position of every landmark out of the scene's own measurement file and compared each one against Adam's drawing. Side to side, everything is close: the worst is under two hundredths of the frame, which is the tolerance the Split Rock card was accepted on. Up and down, everything is wrong in the same direction. The fire tower is low, the outcrop is low, the split rock is low, the log is low, the stump is lowest. Nothing is high. Five separate cards have been carrying what looks like one shared fault. Worth saying plainly: the cards that passed so far were judged on the side to side number, and nobody had checked the up and down number. Split Rock's is off by seventeen hundredths. I also probed the ground along the exact line the camera looks down, and it slopes away from the camera into the valley floor, so there is simply no piece of ground out there that would put a knee-high stump where Adam drew it. The stump cannot be fixed by sliding it around. Either the camera aims lower, or the land needs a raised shelf in the middle distance that the sketch has and the terrain does not. I am not making that change unilaterally because the camera aim is a locked measurement contract, and moving it would quietly invalidate one of the scoring tests until that test is re-derived.",
      "image": "demo-base/roast/composition-vertical-bias.png"
    },
    {
      "id": "stump06-ruled-fail",
      "date": "Jul 30",
      "time": "11:20 HST",
      "status": "blocked",
      "title": "Stump is in the scene and touching the ground, but it is in the wrong place and far too short - card 4 fails",
      "detail": "The trimmed stump went into the scene and rendered. Good news first: it sits on the ground properly, with a real contact shadow, and nothing floats. Its left-to-right position is right too - within a hair of where Adam drew it, comfortably inside the tolerance the Split Rock card was ruled on. Two things fail. It sits far too low in the picture, down in the near foreground instead of on the mid-ground rise where Adam drew it, and that miss is about ten times the tolerance. And once scaled so it is three feet across as Adam's arrow requires, it stands only fifteen inches tall, so from the camera it reads as a wooden disc lying in the dirt rather than a stump you could sit on. Adam's drawing wants it about three feet tall as well. So the card is failed, honestly, on measurements rather than opinion. The two faults have different fixes: the position is a one-number change in the scene setup, while the height needs the stump itself stretched upright, which is the next experiment.",
      "image": "demo-base/roast/stump06-ruled-fail.png"
    },
    {
      "id": "stump-ground-trim-and-aspect-correction",
      "date": "Jul 30",
      "time": "10:35 HST",
      "status": "progress",
      "title": "Stump trimmed out of its turf - and a measuring mistake found that would have thrown the right stump away",
      "detail": "The stump scan came with a patch of ground attached, which made it measure far too wide at the base. That patch is now cut off in Blender and the stump measures like a real stump for the first time: widest where it meets the earth, narrowing steadily to the cut top. Before the trim it measured the opposite way and would have been rejected. Separately, a note carried forward in the handover said Adam's drawn stump is two-thirds taller than it is wide. That is wrong. It came from comparing a sideways fraction against an up-and-down fraction on a picture that is not square. Measured in actual pixels of Adam's sketch the drawn stump is 94 across by 94 tall, and by eye the ink is wider than tall. So a low, broad stump is what the drawing asks for, and the trimmed scan is a low, broad stump. Next: put it in the scene, walk every point where it touches the ground, and rule the card on the overlay.",
      "image": "demo-base/roast/stump-meadow3-ground-trim.png"
    },
    {
      "id": "sketchfab-stump-screen-and-handoff",
      "date": "Jul 31",
      "time": "03:05 HST",
      "status": "blocked",
      "title": "Four stumps we already own, screened — and the next agent will no longer arrive blind",
      "detail": "Still blocked on the stump, but the search has moved somewhere better and cheaper. Four stump scans were already sitting in the repo, downloaded long ago, so trying them costs nothing like the day-per-candidate the outside route would. All four converted at once into the same folder — the first real use of the fixed tool, and nothing overwrote anything. One of them, stump-in-the-meadow-3, is the only one whose outline actually reads as a cut stump: flat top, round body, roots spreading where it meets the ground, and it carries a full set of surface maps rather than just a colour. That is the candidate. It needs the scanned patch of turf trimmed off it in Blender before it can be measured properly, and that is the next job.\n\nOne honest correction against myself. My own quick test ranked a different stump first. Then I looked at the picture and it was a snapped, splintered trunk, not a cut stump at all — so the picture overruled the number, and the ranking was thrown away rather than carried forward. The reason the test misled me is worth keeping: these are scans, so they include the ground they were captured with, and measuring the base then measures stump plus turf. The test is sound on generated shapes and not yet sound on scans.\n\nSeparately, a continuity hole is closed. The rolling notes file the last agent kept was never saved anywhere permanent, so when its context ran out, two days of state vanished and its replacement started blind. Everything that matters now lives in the committed handoff instead: the scoreline, why generated stumps keep failing, the candidate list, and the one detail that keeps biting — the 3 foot mark on the stump measures its WIDTH, not its height. Read it as height and a fatally wrong shape looks like a fixable one."
    },
    {
      "id": "stump01-fails-converter-fixed",
      "date": "Jul 31",
      "time": "02:40 HST",
      "status": "blocked",
      "title": "The catalogue stump fails too — and the tool that nearly ate the Old Log is fixed",
      "detail": "Honest blocked post, no new render this cycle. The stump found in the ForgeMedia catalogue converted cleanly and then failed on shape: it is widest at mid-height and narrowest at the ground, so the root flare runs backwards, and the silhouette has a flat top AND a flat bottom with a ring face. It is a log round stood on end, not a stump with roots entering the soil. Against the hand-drawn box it reads half the width Adam draws, about three times outside the tolerance Split Rock passed on. Third Meshy asset to fail the same way, so it was ruled a fast honest fail rather than a seventh attempt. Card four stays open. Separately, the converter that writes Unity meshes had a hardcoded output filename, so converting a second asset silently overwrote the first: it destroyed the Old Log's mesh earlier today and that was only recoverable because the source is committed. It now requires an explicit output name, refuses unsafe ones, and warns when writing beside a different asset. The fix was checked by re-converting the known-good deadwood and confirming every texture and all 3312 vertices come back byte for byte identical. Best remaining stump candidate is a Sketchfab scan already in the repo, pending a Blender pass to trim the turf it was scanned with. Conifer and sapling assets are waiting and untouched."
    },
    {
      "id": "stump01-pulled-converter-hazard",
      "date": "Jul 31",
      "time": "10:12 HST",
      "status": "in-flight",
      "title": "Pulled the catalogue stump — and overwrote the Old Log's mesh doing it",
      "detail": "The refined stump came down from the catalogue and immediately taught two things. The Sketchfab converter refused it outright for missing the textures it expects, which is the guard behaving correctly since this is a Meshy asset and the wrong tool. The Meshy converter accepted it and then wrote it over the Old Log: that script takes a source file and an output folder but hardcodes the filename it produces, so converting a second asset into a folder that already holds one silently replaces it. The log's mesh went from six hundred kilobytes to two hundred and thirty megabytes of stump geometry, and the next capture would have shown a broken landmark that looked like a regression rather than a tooling accident. It is restored, because the canonical source GLB is committed in the repository, and that is the only reason this was recoverable. The hazard is now written down for whoever uses that script next, along with the fix: give it an output-prefix argument the way its Sketchfab counterpart already has. The stump itself is not yet converted, and that prerequisite comes first.",
      "evidence": "stump_01 (48 MB) pulled · Sketchfab converter correctly refused a Meshy asset · Meshy converter hardcodes FallenPineDeadwood output → overwrote the Old Log (683 KB → 230 MB) · restored from the committed source · prefix-argument fix specified",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "broken-search-cost-the-stump",
      "date": "Jul 31",
      "time": "02:37 HST",
      "status": "accepted",
      "title": "The stump we spent a day failing to source has been in our own catalogue all along",
      "detail": "Querying the media catalogue directly, instead of through the search that returns the same twenty rows for any word including nonsense, turned up three hundred and twenty-three models — among them a refined stump tagged for this very scene. It has been sitting there the entire time. Meanwhile this campaign tried six downloaded candidates, authored one in Blender that failed twice on texturing, and declared the card blocked, on a receipt produced by a tool that never filtered anything. That is the cost. What it buys is larger: the stump card is probably not blocked at all, the conifer problem has a Forest Kit fir cluster and a two-pine model waiting that need no licence round, and the Sapling card — which has never been started — has two purpose-built assets ready for it. The rule that caught this is already written down and this is its third live catch: a query returning nothing, or the same thing for everything, has not proved absence. The addition worth making is sharper — when a search is load-bearing for a decision, validate it first with one term that must match and one that must not. Ten seconds, and it would have saved a day. Next, cards first: pull the refined stump, then the real conifer assets, then Sapling.",
      "evidence": "323 models in catalogue · 'Meshy — stump_01 (refined)' tagged valley-scene/tree-stump · Forest Kit Fir Cluster + two-pine Unity model for conifers · 2 sapling assets for an untouched card · no CC-BY round needed",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "conifer-sourcing-and-receipt-correction",
      "date": "Jul 31",
      "time": "02:12 HST",
      "status": "in-flight",
      "title": "Checking the source first caught a broken search — and one of my own receipts",
      "detail": "The stump taught us to verify a source before sinking hours into it, and applying that to the conifers immediately caught something closer to home. The ForgeMedia search does not filter: asking it for conifers and asking it for a nonsense word both return the same twenty titles. That means one of the three receipts I used to justify calling the stump card blocked — that the catalogue contains no stump — was never a finding at all, just a broken search returning its default page. It is withdrawn; the Sketchfab receipts stand. It is the same class of error as reading a probe's silence as absence, which is already a rule on the books and has now caught two live cases. For the conifers themselves, Sketchfab has no permissively licensed candidates and the paid-in-time cost of the other licence path is a day per candidate, which the stump round measured. The cheapest untested lever is already sitting in the config: a setting that swaps a fraction of the dominant conifer for other species already present in the scene's own tree prototypes. It has never been run on its own — its only outing was inside the batch whose regression destroyed attribution. That is the next single-variable test, and if the prototypes turn out to be one tree at several scales, that is itself the finding that justifies sourcing.",
      "evidence": "ForgeMedia search returns 20 identical hits for any query — stump receipt WITHDRAWN · Sketchfab CC0 conifers 0 · next: dominantConiferReplacementFraction ~0.4 tested ALONE (never done outside the failed batch)",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "split-rock-ruled-passing",
      "date": "Jul 31",
      "time": "01:45 HST",
      "status": "done",
      "title": "Split Rock passes — the first card ruled on numbers rather than on anybody's eye",
      "detail": "The twin spire was built as its own seated form and the blend now shows sky between the two summits, which was the named criterion for a split formation. Measured against the hand-authored sketch box: the centre sits three thousandths of a frame width from where Adam drew it, tighter than the Hiker carried when it passed, and the peak is within fifteen thousandths. Both inside the tolerance precedent already set. The width could not be measured: four attempts were refused because the tool was measuring the whole frame's response to hiding the spire rather than the spire itself, and its centre disagreed with the trusted one. That is recorded on the card rather than papered over, and the card can be reverted if a working width tool later disagrees. Three of nine cards now passing."
    },
    {
      "id": "width-v2-still-wrong",
      "date": "Jul 31",
      "time": "01:22 HST",
      "status": "in-flight",
      "title": "Percentiles fixed the outliers and the width is still wrong — the centroid disagreement says why",
      "detail": "The extent no longer spans the whole frame, so the percentile change worked, but it now reports a formation seventy-nine percent of frame wide when that same formation's attested area is under thirteen percent. So it is still not the built width and still does not get reported. The tell was sitting in the output the whole time and I should have read it on the first attempt: this path reports a centre of 0.3639 while the attestation reports 0.3360, and two measurements of one object cannot disagree unless they are measuring different pixels. They are. My extent consumes the raw threshold difference, and hiding a sixty-metre spire changes far more than its own silhouette — it removes cast light, shifts exposure, disturbs anti-aliasing on distant edges — so the raw difference is a broad frame-wide response with the landmark merely as its densest part. Percentiles trim tails; they cannot separate a diffuse low-amplitude response from a compact high-amplitude one. The fix is to measure extent from the same masked, occlusion-aware pixel set the attestation already uses a few lines away, and the acceptance test is fixed before running it: the extent path's centre must equal the attestation's to three decimals before its width is believed. Card five stands at two axes inside precedent and one unrulable, and I will not certify it on a number I have now refused three times.",
      "evidence": "width v2 = 0.7869 vs attested area 0.1278 — refused · centroid disagreement 0.3639 vs 0.3360 proves different pixel sets · cause: raw diff is a frame-wide response, not a silhouette · fix + pre-fixed acceptance test specified · card 5: centroid -0.0030 IN, peak -0.0148 IN, width UNRULABLE",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "shift-worked-correction",
      "date": "Jul 31",
      "time": "00:52 HST",
      "status": "accepted",
      "title": "Correction: the shift worked — centroid is three thousandths from the drawing",
      "detail": "I reported an hour ago that the shift had undershot eightfold. That was wrong and is withdrawn. I read the centroid from the new extent log line rather than from the scene-report attestation that every ruling in this campaign has actually used, and the two disagree precisely because the new export is the broken one. Trusting an instrument I had just written over the established one, and then publishing a negative from it, is the same mistake as trusting a probe because I wrote it. The real numbers are better than either of us expected: the formation's centre moved from twenty-nine thousandths right of the drawing to three thousandths from it, comfortably inside the tolerance and tighter than the hiker's own residual when that card passed. The summit was already inside. So two of the three axes now sit within precedent and the card turns entirely on width, which cannot be ruled until the extent export stops using extremes and starts using percentiles. The rule this extends is one already on the books: a probe's silence is not data until you prove it looked in the right place — and a new instrument's output is not data until it agrees with an established one on a case you can already check.",
      "evidence": "centroid 0.3677 → 0.3360 vs drawn 0.3390 = -0.0030, INSIDE the 0.02 band · peak -0.0148 inside · width unmeasured pending the percentile fix · previous 'undershot' claim withdrawn with its cause",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "width-unusable-shift-undershot",
      "date": "Jul 31",
      "time": "00:42 HST",
      "status": "reverted",
      "title": "Width export unusable — and my 'shift undershot' claim was wrong, withdrawn within the hour",
      "detail": "Neither result gets dressed up. The new width export returned a span covering the entire frame, which is not a measurement of anything, and the cause is a lesson this project keeps re-teaching in new clothes: a centroid is an average and shrugs off stray pixels, but an extent taken as a minimum and maximum is maximally sensitive to them, so two noise pixels at opposite edges set the bounds. That is precisely the seating lesson again — there an absolute minimum buried an object because one sample hit a cliff, here an absolute maximum spans the frame because a pixel flickered — and it has the same fix, percentile extents rather than extremes, which is a one-line change inheriting the robustness the centroid already has. It is specified and not shipped tonight, because publishing a frame-wide width as the built figure would be exactly the failure three days of instrument work exists to prevent. The shift also missed: the formation moved the right direction but four thousandths instead of the twenty-nine asked for, roughly an eighth of the distance, so the card fails on the same axis it did before. My metre conversion used straight-line distance where depth along the view axis is what matters. The next attempt uses the response actually measured rather than the formula that has now been wrong once.",
      "evidence": "LANDMARK_EXTENT width=0.9994 = whole frame, unusable, percentile fix specified · SHIFT CLAIM WITHDRAWN: I read the centroid off the new broken export (0.3639) instead of the scene-report attestation (0.3360). The shift worked — centroid is now 0.0030 from drawn, inside the 0.02 band.",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "card5-ruled-and-width-closed",
      "date": "Jul 31",
      "time": "00:22 HST",
      "status": "reverted",
      "title": "Card five fails on a number — and the last unrulable axis is now measured",
      "detail": "The ruling stands and is recorded with its exact figure: the summit is inside precedent at fifteen thousandths, the centre is twenty-nine thousandths right of drawn against the twenty-thousandth band the hiker established, and the tolerance was not widened after seeing what it needed to clear. That is a near miss, stated as a number rather than as close. What matters beyond this card is that it can be said at all — four days ago no landmark in this scene could be described that way, and with the sketch boxes now committed for all nine and the kit exporting each landmark's own width, every remaining card is rulable by number the moment it is built. The miss itself was converted into a world-space shift through the frozen lens rather than nudged by feel, applied to the primary so the twin moves with it and the notch survives. Three syntax errors went into adding the width export and all three were caught locally by the compile guard widened this morning, before a single Unity minute was spent — which is both the guard paying for itself again and a fair signal that I was working at the edge of my span.",
      "evidence": "card 5 FAIL on measured 0.0287 (peak 0.0148 inside) · tolerance not widened · DiffExtentX exports LANDMARK_EXTENT per landmark, same mask as the centroid, cannot clamp · shift computed through the lens, notch preserved · 3 compile errors caught free by the widened guard",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "sketch-boxes-and-numbers",
      "date": "Jul 30",
      "time": "23:47 HST",
      "status": "accepted",
      "title": "Nine hand-drawn boxes turn sketch-match from adjectives into numbers — and Split Rock's are in",
      "detail": "The sketch now carries a hand-authored extent for every landmark, committed with the reasoning behind each one: what counts as the landmark's ink, what was excluded, and whether an Adam dimension line fixes the extent or it was read from the drawing. Seven of nine are anchored to his callouts; the old log and the trail are inferred and say so. The boxes were drawn deliberately tight, because a generous box would build an instrument that flatters us rather than measures us. Split Rock's numbers followed immediately: the drawing puts its centre at 0.339 across frame with its peak at 0.167; the build sits at 0.368 with its peak at 0.152. So the formation is about three percent of frame right of where it is drawn, and its summit about one and a half percent higher. Width remains unmeasured and I am saying so rather than reporting the figure my script produced, because the colour mask clamped to its crop for the third time — the fix is a one-line kit change to export the silhouette mask's own x-extent, since the mask already exists. For the ruling, the tolerance comes from precedent rather than being invented now: the hiker passed carrying residuals of two and one percent, so Split Rock's peak is inside that and its centre is slightly outside, which is the number the decision turns on.",
      "evidence": "sketch-landmark-boxes.json committed, 9 boxes, 7 measured / 2 inferred, tight-bias recorded · Split Rock drawn 0.3390/0.1670 vs built 0.3677/0.1522 · deltas +0.0287 centroid, -0.0148 peak · width still unmeasured, kit one-liner specified · precedent tolerance cited, not invented",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "residual-unmeasured",
      "date": "Jul 30",
      "time": "23:07 HST",
      "status": "in-flight",
      "title": "Asked for numbers on the Split Rock residual — I could not produce trustworthy ones, and say so",
      "detail": "The right response to my own adjectives was to demand measurements, and I could not deliver them honestly. Two attempts, both discarded: the first returned a width identical to four decimal places for both the drawing and the render, which is the width of the box I was measuring inside rather than of either formation; the second, over a much wider region, clamped to that region's edge instead. The cause is simple and worth writing down — the sketch's blue ink is not landmark-specific, since the drawn conifers, labels and leader lines are the same ink, so a colour mask over any region containing them measures the region. The one figure I can defend is the kit's own instrumented attestation, which uses an object mask rather than a colour guess: silhouette 0.1217, centroid x 0.3677. There is no equivalent for the drawn spires because the sketch has no per-landmark mask, and that is exactly the gap worth closing: a one-time hand-authored box per landmark on the sketch would make every sketch-match claim in this campaign numeric and retire offset, short and slightly wider for good, the same way the seating telemetry retired it looks floating. The card's named criterion is met and its residual is unmeasured; the ruling stays where it belongs.",
      "evidence": "2 measurement attempts, both region-clamped and discarded with the reason · only defensible figure is the kit attestation (sil 0.1217, centroid 0.3677) · specified fix: per-landmark sketch masks · card criterion met, residual unmeasured",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "twin-final-split-reads",
      "date": "Jul 30",
      "time": "22:42 HST",
      "status": "accepted",
      "title": "The split rock finally splits — and the message to Adam is sent",
      "detail": "The three levers were one shape change rather than three: raising the twin to fifty metres against the primary's sixty, and pulling it in so the gap between them became a notch instead of a valley. On the blend, sky now shows between the two summits, which was the stated pass criterion, and the formation reads as a split rock rather than one mass with something beside it. I am recommending the pass and not declaring it, because the ruling belongs with the supervisor after I retracted a confident claim earlier today; the residual worth their eye is that the pair sits a little right of the drawn spires and reads marginally wider. The sequence that got here is the one worth keeping: measure with the blend, build the thing, look at what building taught, then adjust using the numbers it produced. Four capture iterations, no guesses, every step logged. And the decision message to Adam has gone, leading with the fact that makes the choice his — his sketch costs about three points against roughly twenty-four for execution, so his composition was never the ceiling and eighty is reachable with his design — followed by the honest state and three options, with a recommendation to spend the remaining days on the score and the cap first.",
      "evidence": "twin 50 m, right 8 m, depth 2 m, seated P70 -25.22 · sky between the summits on the blend = criterion met · pass RECOMMENDED not self-certified · reach message sent to Adam with the 3-vs-24 fact leading",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "splitrock-ruled-fail",
      "date": "Jul 30",
      "time": "22:07 HST",
      "status": "reverted",
      "title": "Card five ruled by the blend: fails, and building it is how we learned why",
      "detail": "The twin is built, seated on real ground, and visible — and the card still fails. It reads as a separate shorter rock sitting behind and to the right, not as the second spire of a split formation. Adam's drawing shows two peaks of comparable height rising close together with daylight between their tops; ours has one dominant peak and a subordinate form well below it. The identifying silhouette is not there, so the card does not pass. What makes this worth the pass rather than a deferral is what it taught: the sketch match is not achieved by putting a second object near the first. The twin needs to be taller relative to the primary, closer in plan so the gap reads as a notch rather than a valley, and lifted so sky shows between the two summits. Those are three specific changes to config values that already exist, and we only know they are the answer because there is now a twin to look at. Getting there also cost three seating iterations and produced a rule worth keeping: a low percentile protects a wide flat object from one cliff sample, but a tall narrow object whose base belongs inside the hill needs a high one, or its overhanging skirt drags it underground. The percentile has to suit the object. The day's tally without softening: Split Rock advanced twice and still does not pass, no card reached passing, and no read came back uncapped.",
      "evidence": "twin seated P70 -35.23, visible in frame · blend rules FAIL on silhouette · 3 levers named, all existing config · seating rule learned: percentile suits the object · no card passed today, no uncapped read",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "twin-built-not-reading",
      "date": "Jul 30",
      "time": "21:32 HST",
      "status": "in-flight",
      "title": "The twin spire is built — and it does not read yet, which is an honest fail on a real object",
      "detail": "It was deferred past five theories and it is now built: its own formation instance, its own material, its own footprint seat, thirty-eight metres against the primary's sixty, offset right and back so the silhouette should show daylight between them. It stages cleanly and the object exists. It also does not appear in the blend, and the telemetry says why in one line — all twenty-five footprint samples came back at exactly minus forty, which is a terrain floor value rather than real ground, so the twin is sitting off the sculpted terrain, and the seven-metre sink then drops its base below the primary instead of beside it. That is precisely the diagnosis the seating telemetry was built to give, and both fixes are config values already exposed: apply the offset along the camera's right vector rather than world X, since twenty-six metres of world X is not twenty-six metres to the right of frame, and cut the sink to about two metres. The card stays open. An honest failure on a built thing is worth more than a clean measurement of an unbuilt one, and the pattern that kept postponing it is now named in the ledger. One regression of my own was also caught and fixed in the same pass: the always-on clone trigger I added for the ambient-occlusion probe made the capture claim an atmosphere change it had not made, and the kit's own guard refused it.",
      "evidence": "twin BUILT and staged (38 m, own SeatGround seat) · does NOT read: all 25 samples at the -40 floor = off-terrain footprint, +7 m sink puts base below primary · two config levers specified · my always-clone regression caught by the kit's fog guard and fixed",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "render-thread-closed",
      "date": "Jul 30",
      "time": "20:57 HST",
      "status": "accepted",
      "title": "Ambient occlusion is healthy at 0.75 — six settings measured, none was the cause, thread closed",
      "detail": "The corrected probe answered in one line: occlusion is present, explicitly overridden, and sitting at a perfectly healthy value. It is not absent, not weak, and not the cause — and the number I was about to write would have lowered it, which makes this the third time today that a proposed fix was actually a regression and the third time the habit of logging the previous value caught it before it shipped. That closes the render-settings thread completely. Six settings examined, every one measured rather than assumed, and not one of them was the problem: fog, indirect light, tree billboarding, both shadow levers, and now occlusion. Six theories, six measurements, six deaths, nothing shipped as a claim. What the thread actually leaves behind is the audit that sizes the whole profile in one line, a corrected story about what this scene did and did not have, and four rules that will outlive the campaign. The contradiction that started it stays open but is now genuinely narrow, with two untested candidates written down. And the next action is building, not probing: the second Split Rock spire, specified and waiting since this afternoon, then the conifer asset.",
      "evidence": "AO_PROBE was=0.75 overridden — healthy · my 0.70 would have REDUCED it, dropped · 6 settings measured, 0 causes found, 0 claims shipped · contradiction narrowed to 2 untested candidates · building next",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "ao-intensity-and-ssgi-note",
      "date": "Jul 30",
      "time": "20:47 HST",
      "status": "in-flight",
      "title": "Finishing the probe I broke, and logging why the lighting experiment may never have been tested",
      "detail": "The ambient occlusion probe is corrected to HDRP's real type name and rerun — that is finishing work already started rather than a new theory, and it answers the one sharp question left on that axis: the component exists, so what is its intensity. Alongside it, one connection is written down and deliberately not chased. The audit shows the profile scales indirect light but has no screen-space global illumination at all, and a scaler cannot create a signal it does not have. That is a plausible mechanical explanation for why the lighting experiment moved nothing when indirect diffuse was multiplied by more than two: there may have been almost nothing to multiply, which would mean the hypothesis that the foreground was unlit rather than undetailed was never actually tested. It does not resurrect that experiment and nothing changes on its account. And the render-settings framing on this board is now corrected rather than merely amended: the claim that the scene was bare was wrong and was repeated to Adam. The profile carries eleven overrides including occlusion, fog, sky and shadows. What is true is narrower and still worth fixing — the capture kit never staged any of them.",
      "evidence": "AO probe re-run with correct type name · SSGI absence logged as an UNMEASURED explanation for the LIGHT-01 null · board framing corrected and superseding · gaps recorded not actioned · spire next",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "profile-audit-kills-my-claim",
      "date": "Jul 30",
      "time": "20:30 HST",
      "status": "reverted",
      "title": "The audit's first line disproves my own finding: the scene does have ambient occlusion",
      "detail": "The one-pass audit was meant to size the hole and instead it caught the person who ordered the digging. The profile carries eleven overrides and one of them is screen-space ambient occlusion — the scene has had AO all along. My probe looked for a component called AmbientOcclusion, HDRP calls it ScreenSpaceAmbientOcclusion, it never fired, and I read that silence as proof of absence. The finding is withdrawn and the AO creation is disabled, because adding a second occlusion component beside the real one would have been actively wrong rather than merely useless. Enumerating once beat probing one at a time exactly as predicted, and what it caught was not a missing setting but a wrong conclusion drawn from a probe I wrote myself. That is the third distinct way I have been wrong in two days — asserting a default, measuring the right value of the wrong setting, and now searching for the wrong type name and treating silence as data — and the rule that falls out is worth more than the fix would have been: a probe that finds nothing has to prove it was looking in the right place before its silence counts as evidence. The real question is now sharp and cheap: the component exists, so what is its intensity. And the render-settings picture is better than this morning's framing implied — the profile is well populated, so the honest correction is that the kit never staged these settings, not that the scene lacked them.",
      "evidence": "VOLUME_PROFILE_AUDIT: 11 overrides incl. ScreenSpaceAmbientOcclusion, Fog, HDShadowSettings, PhysicallyBasedSky · my 'AO absent' claim WITHDRAWN · AO creation disabled · gap list recorded (SSR, SSGI, tonemapping) and NOT implemented · next: read AO intensity by correct type name",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "ao-fix-and-audit",
      "date": "Jul 30",
      "time": "20:15 HST",
      "status": "in-flight",
      "title": "Building the ambient occlusion the scene has never had — and auditing the whole profile once",
      "detail": "Two corrections taken. The ambient occlusion goes in as a fix rather than staying a probe, because the argument for it is not speculative: it explains the single most repeated complaint class of the campaign in the judges' own vocabulary, it runs on a clone path already used successfully three times, and it is one component with one value. The wrinkle that made me hesitate is real but small — the profile has no such override, so it has to be created rather than tuned — and it is now built, with the same pre-committed rule attached that saved us from the shadow regression: if it does nothing, it gets dropped rather than quietly kept. The second correction matters more in the long run. Finding five untouched render settings one judge-complaint at a time is the same whack-a-mole we escaped when the seating bug was closed in code, so the capture now enumerates every override the volume profile actually carries and prints the list in one line. That turns an open-ended hunt into a known quantity: we will see the size of the hole rather than discovering its edges by walking into them for another three days. Everything that list reveals stays a list, recorded with the same specificity as the stump prescription. Only the ambient occlusion is implemented. Then building resumes and render settings are done.",
      "evidence": "AO component CREATED (profile had none) at intensity 0.7 · VOLUME_PROFILE_AUDIT enumerates every override in one line · drop-if-no-effect rule pre-committed · everything else stays a list · build next: Split Rock second spire, then conifers",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "ao-absent-thread-capped",
      "date": "Jul 30",
      "time": "20:02 HST",
      "status": "accepted",
      "title": "The profile has no ambient occlusion at all — and that closes the probing thread",
      "detail": "The probe was written to log whatever it found, and it found nothing: the capture emitted no ambient-occlusion line, which means the volume profile contains no such override in the first place. It is not turned down, it is absent, so nothing in this scene is asking for ambient occlusion at all. That matches every complaint on this axis word for word — no soil displacement, no occlusion darkening, no shading in the stump's root cavity, no contact darkening at the base — and none of those are cast-shadow language, which is exactly why they survived the discovery that shadows render across the entire valley. It is also the fifth setting in a row this kit has never touched, after fog, indirect light, tree distance and shadow range, and that pattern is now the most reusable thing today produced: the capture kit stages geometry and lighting rigs but has never staged the render settings the capture depends on. It is deliberately not claimed as a fix, because an absent override cannot simply be turned up the way the others were — it needs a component created and added to the profile clone, which is new machinery and unproven. That is written down precisely, the two remaining candidates are logged, and per the cap the probing stops here. Building resumes: the second Split Rock spire, then the conifer asset.",
      "evidence": "no AO_PROBE line emitted = no AmbientOcclusion override exists in the profile · matches all AO-language complaints, none of which are cast-shadow language · 5th untouched render setting in a row · fix specified but unproven (needs component creation) · thread capped, building next",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "ao-probe-and-cap",
      "date": "Jul 30",
      "time": "19:50 HST",
      "status": "in-flight",
      "title": "Last probe of the thread, then we build regardless",
      "detail": "The thread gets one more question and then it closes whatever the answer is. Since shadows demonstrably render across the entire valley, the judges saying no contact shadow, no soil displacement, no occlusion in the stump's root cavity are most likely describing ambient occlusion rather than cast shadows — and it fits the pattern that has held every single time we have looked: the capture kit has never touched that setting either, any more than it touched fog, indirect light, tree distance or shadow range. Every one was left at whatever the vendor scene shipped with. The probe logs the current value and changes nothing unless it comes back weak. Then building resumes regardless: the second Split Rock spire, which has waited through four dead theories, and the conifer asset, which we established is genuine art work rather than a bug. The contradiction stays on the board as a known unknown with its two untested candidates written down, because it is now costing more to chase than it returns. And the campaign-history note is amended rather than left standing — it proposed the shadow radius as a second systemic reason the numbers never moved, and this result withdraws that. The floating-asset cap remains the one systemic explanation that has survived measurement.",
      "evidence": "AO volume override probed on the same proven clone path, log-only · history note AMENDED: shadow-radius explanation withdrawn, floating cap stands alone · thread capped: build next regardless of the answer · ownership lesson added to SKILL.md",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "shadow-theory-dead",
      "date": "Jul 30",
      "time": "19:35 HST",
      "status": "reverted",
      "title": "Shadow theory dead: HDRP was already casting to five kilometres",
      "detail": "The probe answered it in one line. HDRP's real shadow range was already five thousand metres, explicitly overridden in the volume profile, forty times the depth of this entire scene. Shadows have been rendering across the whole valley the entire time. So the fifteen-metre number I found was real, accurate, and irrelevant — I measured the right value of a setting this render pipeline does not use. Both of today's changes are dropped exactly as the disposition rule written before the result required, and one of them mattered: my six hundred metre override would have cut the range from five thousand and I would have shipped a reduction as a fix. The contradiction we were trying to explain therefore stands open — objects our telemetry proves are bedded are still described as floating, and shadow range is not the reason. Three untested candidates remain, and the honest tally for the day on this thread is four theories advanced and four killed by measurement. That is not a failure mode. Every one died cheaply because it was built to log its own before-value first, and not one of them reached this board as a claimed win. Any single one shipped as folklore would have cost days.",
      "evidence": "HDRP_SHADOW_PROBE wasOverride=True was=5000.0 · theory dead · BOTH changes dropped per the pre-committed rule · my 600 m would have reduced 5000 and been called a fix · contradiction still open with 3 untested candidates",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "hdrp-shadow-override",
      "date": "Jul 30",
      "time": "19:25 HST",
      "status": "in-flight",
      "title": "Going straight at HDRP's real shadow control — and re-reading the campaign's history against 15 metres",
      "detail": "The built-in setting was the wrong lever and I said so before claiming anything, so the fix now goes through HDRP's actual control, the shadow range on the volume profile, using the same clone path already proven twice for fog and for indirect light. It logs what the value was and whether it was even overridden before touching it, and the disposition is fixed in advance: if HDRP's own range turns out to be long already, the theory dies there and today's six-hundred-metre change gets dropped as a no-op rather than quietly kept. The watch order is also fixed before the result, so it cannot be rationalised afterwards — first whether shadows actually appear on the spires and the knoll by eye on a zoomed crop, then whether the cap line weakens, and only then the number. Not batched with the second spire; one variable. And the campaign's own history deserves re-reading against this, stated as explanation rather than proof: if the scene has rendered with a fifteen-metre shadow radius the whole time, then every score reading ever taken here was measured on a frame with essentially no cast shadows past the foreground. That would be a second systemic reason the numbers never moved, sitting alongside the cap. Debris, retiling, erosion, ecology, atmosphere — all measured under conditions we did not know we had.",
      "evidence": "HDRP maxShadowDistance via the proven volume-profile clone · HDRP_SHADOW_PROBE logs the before-value and override state · disposition rule fixed in advance · watch order fixed: shadows by eye → cap line → number · not batched, spire waits",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "shadow-caveat",
      "date": "Jul 30",
      "time": "19:07 HST",
      "status": "in-flight",
      "title": "Fifteen metres is real — but I am not calling it fixed yet",
      "detail": "The value applied and restored exactly as logged, fifteen to six hundred and back. Then I looked at the frame, and the spires and the knoll still are not throwing obvious shadows across the ground. So this does not get claimed. The likely reason is the same trap that caught the tree theory this afternoon: this project runs HDRP, and HDRP takes its directional shadow range from a volume override rather than the built-in quality setting, and a grep says the kit has never touched that either. What is established is worth keeping separate from what is not. Established: the shadow distance really is fifteen meters against a hundred and twenty-two meter view, and this capture kit sets no shadow configuration of any kind, so something in that path is genuinely misconfigured. Not established: that changing this particular number changes the picture. The next step is specified and cheap — put the shadow range into the same volume-profile clone already proven for fog and indirect light, log its before value the same way, and capture again. If HDRP's own range is also short, that is the real finding and today's change gets dropped as a no-op rather than quietly kept as a win.",
      "evidence": "SHADOW_DISTANCE_APPLIED was=15.0 now=600.0, restored cleanly · frame shows no obvious new cast shadows · HDRP uses a volume override the kit has never set · change kept but flagged UNPROVEN, not counted as a fix",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "shadow-distance-15m",
      "date": "Jul 30",
      "time": "18:52 HST",
      "status": "accepted",
      "title": "Fifteen metres: almost nothing in this scene has ever cast a shadow",
      "detail": "The probe measured rather than assumed, and the answer is worse than the theory. Unity's shadow distance in this project is fifteen meters. Our camera looks a hundred and twenty-two meters down the valley; Split Rock stands at two hundred and forty-nine, the lookout at four hundred and twelve. Only the stump, the log and the trail are close enough to cast anything at all. For the entire campaign, essentially nothing in any judged frame has thrown a shadow — not the spires, not the tower, not a single midground tree or boulder. That single number reconciles the contradiction we have been living inside for two days: objects whose seating telemetry proves they are bedded have been called floating in nearly every reading, and both statements were true at once. They are placed correctly and they cast no shadow, and a shadowless object reads as floating no matter how carefully it was seated. It even explains the evidence that looked contradictory — the hiker's contact shadow was verified by eye, and the hiker is the one landmark standing inside the fifteen-meter radius. Whether this reaches the floating cap itself is the question the next reads answer. It is now raised to six hundred meters at capture time with the original restored afterwards, and the honest framing is that this is the second untouched engine default found in two days, which means the real remaining job is to audit every render setting the capture depends on, because this kit has never set any of them.",
      "evidence": "MEASURED shadowDistance=15 m vs 121.8 m look distance · explains 'provably seated yet called floating' across the whole campaign · explains the hiker exception (7 m, inside the radius) · raised to 600 m with restore · capture running, watching the cap line",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "shadow-probe",
      "date": "Jul 30",
      "time": "18:40 HST",
      "status": "in-flight",
      "title": "Measuring the shadow distance before building anything — the same discipline that killed the last theory",
      "detail": "Split Rock is ruled open and the ruling is right: two distinct spires is the landmark's identifying form, and ours is one mass with a lump beside it. Position and scale are measured correct, and the lever is specified — build the second spire as its own object with its own base and seat, daylight between the two at the silhouette. But the shadow question goes first, because it is the only explanation on the table that reconciles a contradiction we have been living with: objects whose seating telemetry proves they are bedded are still described as floating in nearly every reading. Provably seated and persistently called floating is a rendering signature, not a placement one. So this capture probes the actual shadow distance and logs it whatever it is, changing nothing yet. If it comes back already larger than the scene, the theory dies in one line and costs ten minutes — which is exactly how the tree-billboard theory died this afternoon, and why the probe logs the current value before touching it. If it comes back short, it may reach the floating cap itself, which is the thing standing between us and ever seeing this scene measured honestly.",
      "evidence": "Split Rock ruled OPEN, lever specified (second spire as its own form) · shadowDistance probe logs the CURRENT value, changes nothing · stump: third judge reads it as a building, one line, parked",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "splitrock-advanced",
      "date": "Jul 30",
      "time": "18:22 HST",
      "status": "accepted",
      "title": "Split Rock advanced on measurement — and the day's commitment lands half met, said plainly",
      "detail": "The reposition ran rather than waiting, because nothing in it was exploratory: scale to the callout, shift right along its own ray, walk the contacts, re-blend. The numbers moved the way the blend demanded. The peak dropped from the very top of the frame to exactly where the drawing puts it, with the eighteen-foot dimension arrow now aligning instead of overshooting; the formation moved right toward the drawn spire; and its base stayed bedded through the move, confirmed by the seating telemetry that did not exist yesterday. I am not calling the card passed. What the blend still shows unmatched is the silhouette — Adam draws two distinct spires, a taller and a shorter twin, and ours reads as one mass with a lump beside it. That is a shape question rather than a scale one, and after retracting a confident claim of my own earlier today I am not self-certifying a pass by eye. On the day's commitment, plainly: a card advanced, measurably. The uncapped reading did not — it came back capped at fifty, so this scene has still never once been measured at its true quality. Half met. The escalation to Adam is held rather than sent, because its condition was neither.",
      "evidence": "peak y 0.041 → 0.228 (matches drawn peak + 18ft arrow) · centroid x 0.319 → 0.357 · silhouette 0.1486 → 0.0962 · base bedded through the move · NOT self-certified as passing · uncapped read FAILED (capped 50) · escalation held",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "splitrock-rederived",
      "date": "Jul 30",
      "time": "17:40 HST",
      "status": "in-flight",
      "title": "Split Rock re-derived: the inherited read was wrong in the direction it mattered",
      "detail": "The overlay note we had been carrying said Split Rock sits offset left and short of the drawn spires. Re-derived against the current frame, which now carries today's spire seating, the blend says something different: offset left is real, but the formation is not short — its peak stands above the drawn spire's, and the sketch's eighteen-foot dimension line ends well below where ours tops out. It is too tall, which is the opposite error on the axis that matters for a dimensioned callout. That is the second inherited eyeball read to be overturned once an instrument was pointed at it, after the trail route, and it is the whole argument for the rule that no sketch-match claim survives without a registered blend behind it. The measurement is recorded and the fix is specified — scale to the callout against the hiker anchor, shift right along its own camera ray, contact walk the region, re-blend — but deliberately not started, because a reposition begun late and roasted badly is worth less than a measurement recorded cleanly. An uncapped-reading attempt is running in parallel, which is the other half of today's commitment.",
      "evidence": "blend re-derived on the current hero · inherited 'short' overturned: built spire is TALLER than drawn · offset left confirmed · fix specified, not started · uncapped-read attempt in flight",
      "image": "/demo-base/compare/split-rock-blend-50.png"
    },
    {
      "id": "deviation-and-conifer-lod",
      "date": "Jul 30",
      "time": "17:00 HST",
      "status": "reverted",
      "title": "Deviation stated plainly — and my conifer diagnosis was wrong, corrected within the hour",
      "detail": "Two things Adam should read rather than infer. First, a deliberate deviation from his standing order: the stump is parked unfinished and we have moved on, which is the second time we have stepped out of his one-card-at-a-time sequence after the trail. The reason is that the stump is now a diagnosed problem with a written prescription rather than an open question — cylindrical unwrap along the trunk axis, a baked normal map instead of vertex displacement, its own bark material — and that hour is worth more as a focused session than as a seventh attempt tonight. The card stays honestly failing. Second, a correction I have to make against myself. I claimed the conifers were rendering as flat billboards because Unity defaults that threshold to fifty meters and our camera looks a hundred and twenty-two meters out. The capture's own logging — which I had just added to print the value it was changing FROM — reported that the real threshold in this scene was three hundred meters. The trees were already full meshes at hero distance. The claim is false and withdrawn, along with the idea that it rewrites the cloned-conifer criticism. What is true is that the judges' description is accurate: at zoom the conifers really are bare poles carrying a few detached frond clumps with gaps between trunk and foliage. That is the asset itself at full detail, which means it is a genuine ecology and asset task rather than the cheap settings win I announced. The error cost one capture and lived on this board for about fifteen minutes before its own instrumentation refuted it, which is the argument for always logging what you changed from and not only what you changed it to. The lesson I had been applying to other people's hypotheses now applies to mine: never assert a default, measure the actual value.",
      "evidence": "DEVIATION #2 from Adam's card order, stated not implied · conifer billboard claim WITHDRAWN: measured 300 m, not the 50 m default — trees were already meshes at hero distance · tree asset is genuinely sparse, so it stays an ecology task · LOD change kept as a free no-op for the hero, not counted as a fix",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "day-close-jul30",
      "date": "Jul 30",
      "time": "16:40 HST",
      "status": "reverted",
      "title": "Day's honest close: no landmark card advanced, and the most valuable work was all bugs",
      "detail": "Said plainly because it matters more than the parts that went well: not one landmark card advanced today. Two cards remain passing, the trail and stump stay open, and the score ladder ended the day below where it started. What today actually produced was instrument and bug work — measuring that the judge swings nine points on an identical frame, proving with real photographs that its defect list is trustworthy, discovering that one floating rock has capped every reading this scene has ever received, and then finding seven more latent copies of that same seating bug in a code audit that needed no license seat. The seating helper is now the single implementation for every placed object and it prints a line per object, so a floating thing shows up in the build log instead of waiting for a judge to notice it. The stump was authored in Blender rather than downloaded, which was the right call after three exhausted sources, and it failed twice on texturing — a soap block with no UVs, then a shattered shell from a bad projection. Reverted rather than ground a third time, with the diagnosis written down: the shape is sound, it needs a cylindrical unwrap along the trunk axis, a baked normal map instead of vertex displacement, and its own bark material. That is one focused session, not another sourcing round.",
      "evidence": "NO landmark card advanced today · seating migration complete, SEAT_GROUND telemetry live per object · authored stump failed twice on texturing and was reverted with a written diagnosis · conifer LOD check still queued",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "authored-stump",
      "date": "Jul 30",
      "time": "16:15 HST",
      "status": "in-flight",
      "title": "If nobody sells the part, machine it: the stump is now authored, not downloaded",
      "detail": "Three sources are exhausted and the receipts point at the answer, so the stump is built rather than bought. It is not a primitive wearing a texture: the trunk is a stack of lofted rings with irregular per-angle radius and drift so no cross-section is a circle, the top is a torn concave break rather than the flat sawn disc that made two judges see a crate, and four root buttresses flare out to twice the trunk width and dive below ground so the object cannot read as a cylinder resting on turf however it is seated. Bark comes from layered noise displacement with a vertical grain, because bark runs up a trunk. Four thousand triangles, trunk built directly to Adam's three-foot callout and wired at one-to-one so the contract is not rescaled away. Authoring also sidesteps every failure mode that killed the downloads: no crop ambiguity, no grass baked into the silhouette, no licence question, and we control the root flare that broke footprint scaling in the first place. It faces the contact walk and the three-foot check against the hiker before any promotion. Also finished: the seating migration, so talus, spire and log now share the single helper rather than carrying three copies that would drift apart the first time someone improved one.",
      "evidence": "Blender 5.2 headless, 3,984 tris · lofted irregular rings, torn cap, 4 buried buttresses, noise bark · trunk = 3 ft contract at 1:1 · seating migration complete, one implementation · capture running",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "seat-sweep-01",
      "date": "Jul 30",
      "time": "15:52 HST",
      "status": "accepted",
      "title": "Stop fixing floating objects one at a time — the bug was in the placement code all along",
      "detail": "An audit that needed no license seat and no judge found the whole class. Thirty-five ground-sampling call sites, and seven of them seat objects from a single point sample with no footprint logic whatsoever — the stump, the rock outcrop, the shelter supports, the tor columns, the granite column, the outcrop bands and the authored spire peak. Every one is a latent version of the bug that has already shipped three times and been discovered three separate times, weeks apart, by three different judges. That also explains why our roasts kept missing them: we were auditing renders for a defect that lives in placement code. There is now one canonical helper that scans an object's real footprint and returns a low percentile, with all three wrong statistics written into its own documentation so the next person cannot repeat them — a single sample hangs the downhill half, a mean of corners hangs the low side, an absolute minimum buries the object entirely. Callers are being routed through it, and it logs a seat line per object, so from now on a floating object shows up in the build log rather than waiting for someone to notice it in a picture. Separately, and with receipts rather than assertion: the stump card is genuinely blocked. ForgeMedia has no stump asset at all, Sketchfab has zero downloadable CC0 stumps, and six candidates across three sources have now failed for understood reasons.",
      "evidence": "7 latent single-sample seaters found by code audit · canonical SeatGround helper written with the 3 wrong statistics documented · callers routed, SEAT_GROUND telemetry per object · stump sourcing exhausted: ForgeMedia 0, Sketchfab CC0 0, 6 candidates failed",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "contact-walk-first-catch",
      "date": "Jul 30",
      "time": "15:27 HST",
      "status": "in-flight",
      "title": "The new contact walk catches its first bad promotion — my own",
      "detail": "The spire base is fixed and it holds up: the flat cut hanging in mid-air over open water is gone, the formation now rises out of the terrain, and the seating telemetry shows it bedded between the low and high of its own footprint rather than averaged into space. That ships. The stump swap does not. Retiring the primitive for a real scanned mesh was the right argument — the standard forbids shipping recognizable primitives — but the contact walk made me look at the object instead of the argument, and at hero scale the scanned stump is a pale cream drum with flat shading and no bark, which is not obviously better than the crate two judges thought they saw. It was pulled before promotion rather than after. The honest position on that card is unchanged and uncomfortable: both available options fail, the procedural reads as a placeholder building and the scan reads as a pale drum, and the card is blocked on an asset that works. Next in sequence, and bugs come before art: the conifers show the signature of a wrong-LOD or broken prefab rather than an ecology deficit, and if that is what it is, a single setting fixes the most-named defect class of the entire campaign.",
      "evidence": "spire base PASS (P20 seat, 9.5 m sink, no cut edge) · stump swap FAILED the contact walk and was pulled pre-promotion · protocol caught it on first use · conifer LOD bug next",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "three-wrong-statistics",
      "date": "Jul 30",
      "time": "15:12 HST",
      "status": "in-flight",
      "title": "Every contact bug in this project has been the same mistake: the wrong average over a footprint",
      "detail": "The judges found two more binary failures and both were already-solved problems in disguise. The spire itself floats — not its talus, the landmark — ending in a flat cut in mid-air with river visible under the edge, which one judge called the single most credibility-destroying pixel in the frame. Its cause is the third wrong summary statistic in the same file: the spire seats to the mean of nine corner samples, and the comment sitting directly above that code already recorded that the minimum buried it twenty-six meters and the centre floated it. The answer between them is the low percentile the talus needed an hour ago. Tower legs, talus pile, spire base — three for three, every contact bug in this project has been a wrong average over a footprint, and the rule belongs in the kit rather than in three call sites. The box two judges called a crate with no roof or door has been identified by coordinates rather than argument: it sits where the stump sits, not where the lookout sits. It is our own procedural cylinder, the interim de-box. The Lookout card is not implicated and does not need re-examining. The primitive is retired for a real mesh regardless, because the standard forbids shipping recognizable primitives. And the process failure is recorded with its fix: roasts have now missed a floating pile, a floating log, decal litter, a floating spire and a box, all caught by blind judges at a glance, so the protocol now demands a written contact walk before any promotion — every object enumerated, what it rests on, whether a shadow is there. An unenumerated object is an unchecked object.",
      "evidence": "spire seat mean → P20 of 25 samples, sink 5.2 → 9.5 m · box identified as the procedural stump by frame coordinates, Lookout cleared · primitive retired for scanned mesh · contact walk with teeth added to SKILL.md · conifer LOD-bug check queued before any ecology work",
      "image": "/demo-base/updates/seatall01-contact.png"
    },
    {
      "id": "seat-all-01",
      "date": "Jul 30",
      "time": "14:38 HST",
      "status": "in-flight",
      "title": "The slab fix worked and the ceiling stayed — because everything else floats too",
      "detail": "Read the cap first, as agreed. The floating slab that was defect number one in five consecutive readings is named in none of the three that followed: the footprint seating did exactly what it was built for. The mean nonetheless fell from fifty-seven to fifty, which is precisely the trap identified this morning — under a hard cap the number cannot reward a fix, so nobody should read fifty against fifty-seven as a failure. The ceiling held for a simpler reason: the slab was never the only thing floating, it was the one we happened to look at. All three reads now name the same list — the fallen log's far end hovering a log-width above the grass with light under it, perched boulders with no bedding or soil displacement, detached foliage sprigs, and, said plainly because it is ours, the debris layer we added to help the score, lying decal-flat with no penetration. We introduced a defect while chasing a defect. It is one systemic bug rather than four fixes: every prop in this scene sits on the terrain instead of in it. So the log now takes twenty-seven samples along its own length, the talus takes a percentile instead of a minimum so it spills down the slope rather than vanishing underground, and every twig is aligned to the ground's own normal and driven up to three-quarters of its height into the surface. The honest framing of today: this scene has never once been measured at its real quality, because something has been floating in every reading we have ever taken. Whether that is good news or bad is genuinely unknown until a read comes back uncapped.",
      "evidence": "slab absent from 3/3 reads (was defect #1 in 5/5) · cap held on log + boulders + our own litter + foliage sprigs · SEAT-ALL-01 = one variable, contact · re-read next, cap line first",
      "image": "/demo-base/updates/spire01-slab.png"
    },
    {
      "id": "the-ceiling",
      "date": "Jul 30",
      "time": "14:10 HST",
      "status": "accepted",
      "title": "We have been climbing under a ceiling: one floating rock caps the entire scene at 60",
      "detail": "Every one of the three latest blind reads applied the same hard cap — sixty maximum, for floating assets — and every one named the same object as the single worst defect: a cluster of scree hanging off the main spire with no ledge under it, no contact shadow, and sky visible beneath. The contract needs eighty. That means every hour of lighting, texture, erosion and atmosphere work in this campaign has been spent underneath a ceiling twenty points below the target, which is the most likely single explanation for four consecutive experiments coming back flat or down: improvements under a cap have nowhere to go. The cause is now found in code, and it is the same mistake the tower legs taught us a day ago and we failed to generalise — the talus pile was seated from a single ground sample at its centre, so a fourteen-meter pile on a slope buries its uphill half and leaves its downhill half in mid-air. It now samples twenty-five points across its own footprint, seats to the lowest of them so nothing can float, and beds deeper than the local relief. This also vindicates the rule Adam wrote on day one. Nothing floats, everything touches is not a style note — the judge enforces it as a hard ceiling, which means the compliance ladder and the score ladder were never separate. The signal to watch on the next reads is not the number. It is whether the cap line disappears.",
      "evidence": "3/3 reads: 'cap: 60 max (floating assets)' · same object named defect #1 in all three · root cause: single-point seat on a 14 m pile · fixed with 25-sample worst-case footprint seating · LIGHT-01 reverted (premise split 2-1, physically arbitrary)",
      "image": "/demo-base/updates/light01-foreground.png"
    },
    {
      "id": "light01-promoted",
      "date": "Jul 30",
      "time": "13:35 HST",
      "status": "in-flight",
      "title": "The shade lifts and the detail was there all along",
      "detail": "With the sky allowed to fill the shadow, the foreground that five readings called dark and crushed now shows what was already built into it — soil grain, pebbles, the scattered sticks, grass with structure instead of a flat green wash. Nothing was added to the scene to achieve that; the debris and the finer texture have been sitting in an unlit shadow for two experiments. Landmark measurements are unchanged to within a thousandth, so nothing on the compliance ladder paid for it. Three independent reads are running, and the honest test is the same as always: not only whether the mean clears the noise band, but whether the judges stop naming the foreground and stop using the word dark. If this lands, it is the first movement in the right direction all campaign, and the calendar warning stays exactly as sharp as it is until the number says otherwise.",
      "evidence": "LIGHT-01 promoted, one variable · foreground visibly lit at judged resolution · landmark telemetry unchanged (±0.0003) · three-read mean in flight · coarse revert clause (<48)",
      "image": "/demo-base/updates/light01-foreground.png"
    },
    {
      "id": "light01-building",
      "date": "Jul 30",
      "time": "13:22 HST",
      "status": "in-flight",
      "title": "Lighting the shadow the detail is already hiding in",
      "detail": "The hypothesis earns its own experiment, alone, not batched with anything — this morning already paid for that lesson. One variable: the engine's indirect diffuse lighting, raised so the blue sky fills the shade where every foreground fix so far has been invisible. The debris is already there. The finer ground grain is already there. Five readings say the region is dark, crushed, and starved of ambient, and the photoreal reference lost five points for exactly the same thing — a single warm grade with no cool sky bounce — which is why it is docked at every tier of the ladder. The revert clause is deliberately coarse this time: revert only if three reads average below forty-eight, a real regression rather than a wobble, because a threshold inside the noise band is a coin flip in a lab coat. That clause-design lesson has been written into the art skill so the next agent inherits the rule and not the mistake.",
      "evidence": "LIGHT-01 isolated, one variable · new kit knob via the existing profile-clone (source asset never mutated) · coarse revert clause (<48) · instrument-discipline lessons added to art-environment-design SKILL.md",
      "image": "/demo-base/updates/retile01-foreground.png"
    },
    {
      "id": "retile01-result",
      "date": "Jul 30",
      "time": "12:57 HST",
      "status": "reverted",
      "title": "Three foreground fixes, zero movement — because the foreground isn't missing detail, it's unlit",
      "detail": "The strongest physical lead of the campaign was tested alone and produced nothing: fifty-one, fifty-seven, fifty-seven, a mean of fifty-five against a baseline of fifty-seven, comfortably inside the nine-point noise floor. All three judges were asked point-blank whether the foreground is a defect and all three said yes, in the same words as before. So texture frequency was not the binding constraint either. Putting three failed experiments side by side finally shows what we kept missing: debris was invisible, the batch regressed, retiling did nothing, and every single judge describes that region with a word we never weighted — dark. The foreground sits in the low sun's shade with no cool sky fill, and the photoreal reference lost five points for exactly that. The detail is not missing, it is unlit; you cannot see props or grain in a shadow with no fill light. That makes split key and fill colour temperature the next experiment, which is also half of the eight-to-ten points the judge priced. And two independent judges, blind, both flagged a shelf of rock jutting from the spire with no support and no contact shadow as a top-three defect — that is the talus slab logged long ago and never fixed, and it is the Split Rock card and a score defect in the same object. On the retiling itself: it is kept, and the honest reason is the same one used for the debris — it measured two points lower on an instrument that cannot resolve two points, so whether it helped, hurt, or did nothing is unknowable. It is physically correct, free, and roast-clean, and that is the whole case for keeping it.",
      "evidence": "51/57/57 mean 55.0 vs 57.0, inside ±9 · foreground still named by 3/3 · synthesis: the region is UNLIT, not undetailed · floating spire rock confirmed by 2 blind judges · retile kept as a judgment call, clause-design lesson recorded",
      "image": "/demo-base/updates/retile01-foreground.png"
    },
    {
      "id": "retile01-isolated",
      "date": "Jul 30",
      "time": "12:45 HST",
      "status": "in-flight",
      "title": "The strongest lead, finally tested alone: one change, three reads",
      "detail": "Everything from the failed batch is off; the only difference from the best-measured state is the near-field texture tiling. The physical case is the clearest thing found all campaign — the terrain's layers repeat every ten to twenty meters, so across the first eight meters of ground, which is the largest and closest area of the judged frame, there is roughly one texture repeat and therefore almost nothing for the camera to resolve. That is a root cause for five readings of 'detail-free smear', not a guess. At two and a half meters the zoomed roast shows real grain with no repetition tell, every landmark measurement is unchanged, and three independent reads are running. The result gets reported the honest way from now on: delta against a stated noise floor of plus or minus nine, with the named-defect text as the real signal — if the foreground stops being called a smear, that matters more than the number.",
      "evidence": "RETILE-01 isolated (all batch items off) · 3 layers retiled 12-20 m → 2.5 m · roast clean, no repetition · landmark telemetry unchanged · three-read mean in flight",
      "image": "/demo-base/updates/retile01-foreground.png"
    },
    {
      "id": "sketch-cost-measured",
      "date": "Jul 30",
      "time": "12:32 HST",
      "status": "accepted",
      "title": "What does Adam's sketch cost us? Three points. Execution costs twenty-four",
      "detail": "Rather than speculate about whether complying with the sketch is holding the score down, the question got a number. Taking the photoreal render of our own composition — which scored seventy-three, losing twenty-seven — and attributing each itemised deduction to either the drawn composition or to execution quality: the composition accounts for about three points, being the balanced fin slab's form, the pond's contact geometry, and the log crossing the frame tangentially. Execution accounts for about twenty-four: single-temperature lighting, the pond treated as a decal, missing erosion, one conifer family, absent midground haze, weak contact shadows, edge artifacts. Two conclusions follow and both are good news. Sketch fidelity is cheap — it costs about three points, which is inside our noise floor, so there is no case for trading Adam's composition for judge points and nobody should re-open that. And eighty is reachable with his design: halving the execution deficit on a photoreal treatment of this scene projects around eighty-five. Split Rock keeps the form he drew; what gets built is the most physically plausible version of it — bedded base, crushed contact, debris apron — which is also the talus defect already logged against that card.",
      "evidence": "read C itemised: mandate 3 pts vs execution 24 · calibration ladder pinned permanently to the board · sketch-fidelity rule affirmed as cheap · 80 reachable with Adam's composition",
      "image": "/demo-base/refs/napkin-full-scene-photoreal.png"
    },
    {
      "id": "calibration-ladder",
      "date": "Jul 30",
      "time": "12:17 HST",
      "status": "accepted",
      "title": "A photoreal render of our own composition scores 73 — the contract asks us to beat it",
      "detail": "The third control read is the one that changes the plan. Run blind, the judge scored a professionally photoreal image of this exact composition — same hiker, stump, log, pool, tower, spires — at seventy-three out of a hundred. That is seven points below the contract, from an image with nothing to do with our engine. Its criticisms of that image are mostly composition-level, and they are things the compliance contract obliges us to keep: the pool reading as a decal where it meets the bank, a single warm grade with no cool sky fill, and the balanced fin slab it calls geologically impossible, which is Split Rock, a mandated landmark. So the calibration ladder now reads: real photographs one hundred, a photoreal version of our composition seventy-three, our best engine state fifty-seven. Reaching eighty means beating a photoreal reference of our own scene, which is a materially harder task than making the render better, and Adam should hear that today rather than on the fourth. It is not hopeless — the judge's brief for that reference image is specific and it estimates eight to ten points in water contact and split light temperature alone, both of which apply directly to us, and water doubles as the Spring Pool card. That is where the next work goes after the retiling test.",
      "evidence": "calibration ladder 100 / 73 / 57 · photoreal render of our own composition = 73, below contract · best targets now: water contact, split key-fill temperature, midground haze, conifer families",
      "image": "/demo-base/refs/napkin-full-scene-photoreal.png"
    },
    {
      "id": "judge-control-result",
      "date": "Jul 30",
      "time": "12:07 HST",
      "status": "accepted",
      "title": "The judge is honest: it gives real photographs 100 and names none of our defects in them",
      "detail": "Two runs bought the answer to a question worth fifteen. Run blind on two genuine photographs from this project's own target set, the judge scored both a hundred out of a hundred and did not name a single one of the three defects it repeats about our scene. It went further and praised precisely those properties in the photographs — real exfoliation jointing, erosion-true landforms, correct mountain zonation, zero repetition or tiling. It also identified both correctly as photographs, criticising only crushed shadows and lens flare, which cost nothing. So the prose is not canned, the defects are real properties of our scene, and the steering rule stands. The corollary is the uncomfortable part and it goes on the record: this scale is anchored at the top by reality. Real photographs sit at a hundred, our best measured state at fifty-seven, and our experiments have been wobbling by five in the bottom half of that range. Eighty is not a nudge above where we are, it is most of the distance from a competent real-time blockout to a photograph. With six days left, two readings at eighty and nine finished cards is not a plan I can honestly call likely — and the single most valuable thing found today remains untested on its own: the terrain's texture layers tile every ten to twenty meters, so the judged foreground has almost no detail to resolve. That test runs next, alone, on its own three-read mean.",
      "evidence": "real photos 100/100 and 100/100 · zero of three headline defects named (retirement threshold was two) · rule VALIDATED · next: near-field retile alone",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "judge-control-01",
      "date": "Jul 30",
      "time": "11:55 HST",
      "status": "in-flight",
      "title": "Testing the judge before trusting it again — two real photographs, run blind",
      "detail": "We fixed all three of the defects named in every reading, and all three were named again in every reading afterwards. That has two possible meanings and they point in opposite directions: either the fixes genuinely failed to land at the resolution being judged, or the judge says those words about any computer-generated landscape, in which case the steering rule measures its habits rather than our scene. So the same judge is now reading two real photographs from this project's own photoreal target set, plus a high-quality non-engine reference of our composition, blind and unanchored. The decision rule was written down before the results: if a genuine photograph attracts two or more of the three headline defects, the rule is retired today and steering moves to direct comparison against those photographs. Two runs to protect fifteen. Said plainly and sharper than yesterday: the score moved backwards today, we are now spending campaign time proving the instrument, and with six days left the odds of banking two readings at eighty and finishing nine cards are getting worse, not better.",
      "evidence": "JUDGE-CONTROL-01 pre-registered with an advance decision rule · 2 real photos + 1 reference render · batch failure attributed to the supervisor's instruction in the ledger",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "batch01-reverted",
      "date": "Jul 30",
      "time": "11:37 HST",
      "status": "reverted",
      "title": "The batch made it worse — 49 against 57 — and the reason we can't say which part is the lesson",
      "detail": "Three reads of the batched frame came back fifty-six, forty-four and forty-eight, a mean of forty-nine against fifty-seven before it: roughly eight points down at about two sigma, and every read still named the same three defects the batch was built to kill. The prediction failed in both directions it could. Worse, three complaints appear that were never there before — white fringing on silhouettes, billboard-flat trees, a washed-out background — and they point at the conifer swap and the fog, but pointing is not measuring, so no claim is made. The whole batch is reverted to the better-measured state rather than reverting my favourite suspects, because guessing with six days left is how days get spent twice. The method lesson is worth more than the batch was: batching to save judging cost destroys attribution the moment the batch loses, and one item costing ten points can hide behind four that gain two. Single-item tests resume with the best-justified first — the near-field retiling, whose physical case is still strong — each on its own three-read mean.",
      "evidence": "56/44/48 mean 49.3 vs 58/61/52 mean 57.0 · delta -7.7 at ~2 sigma · full revert · new artifacts noted as hypothesis only · method lesson recorded",
      "image": "/demo-base/updates/batch01-foreground.png"
    },
    {
      "id": "batch01-promoted",
      "date": "Jul 30",
      "time": "11:12 HST",
      "status": "in-flight",
      "title": "All five landed and none had to be pulled — now the three reads decide",
      "detail": "The batch survived its own revert clause intact: at zoom the reworked ground shows real grain instead of smear with no repetition tell, the new gullies read as drainage rather than scars, the mixed conifers break the cloned line, the atmosphere separates the midground without washing it out, and the river is shaded water rather than a grey plate. Every landmark measurement is byte-identical to before, so nothing on the compliance ladder was disturbed to buy this. Three independent reads are running on the promoted frame; the honest test is not just whether the mean clears the noise band but whether the three defects named in five readings out of five stop being named at all.",
      "evidence": "5/5 items roast-clean, none reverted · 3 layers retiled · all landmark silhouettes unchanged · three-read mean in flight",
      "image": "/demo-base/updates/batch01-foreground.png"
    },
    {
      "id": "batch01-building",
      "date": "Jul 30",
      "time": "10:52 HST",
      "status": "in-flight",
      "title": "One batch, five named defects — and the ground finally gets something to render",
      "detail": "With a nine-point spread there is no sense reading between single fixes, so the whole named worklist goes in at once and gets one three-read mean afterwards. The centrepiece is a discovery that explains five readings of complaint: the terrain's texture layers tile every ten to twenty meters, so across the first eight meters of ground — the biggest, closest pixel area — there is barely one texture repeat. The surface has no high-frequency detail to show, which is exactly what 'low-frequency smear' means. They now tile at two and a half meters near the camera, restored on teardown. Alongside it: four drainage cuts down the lookout knoll with rock breaking through on steep ground, two fifths of the cloned conifers replaced with other species, continuous atmospheric density so the midground separates instead of jumping to mountain haze, and the flat grey river turned into shaded water — which is also the Spring Pool card, the deliberate overlap where one fix pays both ladders. Every item was checked against the visible-at-judged-resolution rule before it was built, and any item that roasts badly gets reverted individually before the reads.",
      "evidence": "BATCH-01 pre-registered, 5 items · near-field retile 12-20 m → 2.5 m · erosion + splat · conifers 0.4 · fog 950 · water on · capture building",
      "image": "/demo-base/updates/scatter01-foreground.png"
    },
    {
      "id": "noise-floor-result",
      "date": "Jul 30",
      "time": "10:32 HST",
      "status": "accepted",
      "title": "The judge swings 9 points on an identical frame — and that rewrites the plan, not just the arithmetic",
      "detail": "Three blind reads of one unchanged image came back fifty-eight, sixty-one and fifty-two. Nothing moved between them. Four consequences follow and none are comfortable. The scatter's two-point drop was never evidence of anything — the instrument cannot resolve two points, so that experiment taught us about measurement rather than debris. Every experiment from here needs a three-read mean, at triple the judging cost, because a single-read delta under nine points is indistinguishable from luck. The contract is harder than the raw gap implies: for individual readings to clear eighty reliably, the true mean has to sit near eighty-five, which is twenty-eight points of real improvement from today's fifty-seven. And the most useful discovery: while the numbers wobble, the words do not — erosion, near-field ground material and vegetation variety are named in five readings out of five. So we steer by what the judges repeatedly name and use three-read means only to confirm movement. Said early and plainly, per standing instruction: the score ladder is the hard half, it will likely need most of the remaining six days, and on this trajectory not all nine landmark cards will land. Better to hear that today than on the fourth.",
      "evidence": "58/61/52 on an unchanged frame · sigma 3.7 · three-read means adopted · steering rule now text-first · calendar warning raised",
      "image": "/demo-base/updates/scatter01-foreground.png"
    },
    {
      "id": "noise-floor-01",
      "date": "Jul 30",
      "time": "10:17 HST",
      "status": "in-flight",
      "title": "Stop steering by one reading: measuring the judge before measuring the scene",
      "detail": "Fifty-eight then fifty-six is not a result, because we have never measured how much this judge varies on an identical frame. That single gap makes every future experiment unreadable — a jump from fifty-six to sixty-one would be indistinguishable from a lucky sample. So before any further scene work, the current promoted hero is being read three times unchanged, each judge blind to the others and to every project file, reporting per-category subscores so we learn whether the variance lives in the total or in which categories get punished. From then on every experiment is reported as a delta against a stated noise floor. The scatter's board wording is corrected to match that standard: it was kept because a single sample cannot resolve two points, not because it obviously helps. And a plain warning while there is still time to act on it: if the spread is wide, two readings at eighty need real margin, and the score ladder may need most of the remaining six days — in which case not all nine cards will land.",
      "evidence": "NOISE-FLOOR-01 pre-registered · 3 blind reads in flight on the unchanged hero · scatter wording corrected to the honest form",
      "image": "/demo-base/updates/scatter01-foreground.png"
    },
    {
      "id": "scatter-reread-56",
      "date": "Jul 30",
      "time": "10:02 HST",
      "status": "reverted",
      "title": "The re-read says 56 — the judge never saw the debris, and that is the most useful thing learned all day",
      "detail": "Five hundred and twenty pieces of physically correct forest litter moved the score from fifty-eight to fifty-six, which is to say it moved nothing outside noise. The judge's words explain why: it still describes the foreground as a blurred, detail-free smear with zero pebbles or twigs. At the hero camera's distance and the judged resolution, hand-sized debris is a few pixels — invisible exactly where the points live. Reading the prescription again more carefully, it leads with material detail and only then mentions props; we built the half we could see up close and skipped the half the camera resolves. The scatter stays — and the honest reason is narrower than 'it helps': it read two points lower on a single unrepeated sample, and a single sample cannot resolve two points. Whether it helped, hurt, or did nothing is currently unknowable, which is itself the finding. The next score experiment goes at the near-ground material itself — tiling break, higher-frequency normal, displacement across the first six to eight meters. The lesson is recorded in plain words: a fix aimed at a judged frame has to be visible at the judged resolution.",
      "evidence": "58 → 56, no attributable gain · judge text: foreground still 'detail-free smear' · scatter retained, lever changed to material · lesson recorded",
      "image": "/demo-base/updates/scatter01-foreground.png"
    },
    {
      "id": "scatter01-accepted",
      "date": "Jul 30",
      "time": "09:52 HST",
      "status": "accepted",
      "title": "The forest floor arrives: 520 pieces of real debris, and the trail got more visible for free",
      "detail": "Two iterations. The first put a hundred and forty pieces down and roasted as scattered props — right idea, wrong scale. The second draws five hundred and twenty from the same real meshes at true litter size, biased hard toward the small end: sticks a hand long, chips a thumb wide, each one rotated freely, scaled unevenly, and bedded into the soil with its own contact shadow. Zoomed roast is clean — nothing floats, nothing intersects a landmark, no clone grid, no repeated orientation. Every landmark measures the same or better, and the trail actually gained visibility because litter breaks its manufactured edge. An independent re-read is running now on this single change, so whatever the number says, it says it about debris alone. Separately, the compile guard that let two Unity runs die on typos today was widened to cover every kit file and tested in both directions.",
      "evidence": "520 items · roast clean · trail silhouette 0.0751 → 0.0906 · all other landmarks unmoved · re-read in flight · compile guard fixed + negative-tested",
      "image": "/demo-base/updates/scatter01-foreground.png"
    },
    {
      "id": "two-ladders-scatter01",
      "date": "Jul 30",
      "time": "09:30 HST",
      "status": "in-flight",
      "title": "Two ladders, side by side — and the first rung of the one we never climbed",
      "detail": "The realism reading reframed the campaign, so the board now shows both ladders honestly: nine landmark cards for contract compliance, of which two are passing, and two blind-panel readings at eighty for the score, of which none are banked. Every hour so far went into the first ladder; the judge's three biggest point-costs live entirely on the second. SCATTER-01 is the first rung of that second ladder and the judge's own highest-value fix: a hundred and forty pieces of real debris — sticks, chips and pebbles cut from meshes already in the scene — scattered across the near ground with uniform disc density, random orientation, non-uniform scale, and each piece bedded into the soil so nothing floats. A single re-read follows so the delta belongs to this one change and nothing else. Erosion and vegetation variety are queued behind it, interleaved with the remaining cards.",
      "evidence": "SCATTER-01 pre-registered with revert clause · 140 items from real meshes · board restructured into compliance + score ladders",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "realism-58-and-stump-truth",
      "date": "Jul 30",
      "time": "09:05 HST",
      "status": "accepted",
      "title": "First real number of the campaign: 58 — and the stump blocker I named turns out to be my own wrong call",
      "detail": "Two honest results. The campaign's first measured realism reading came back 58 out of 100 from an independent judge, capped at sixty for ecology and un-eroded landform. It is one reading, not the contract's blind panel, so it counts as an indicator — but it is the first number anyone has actually taken, and the gap to eighty is twenty-two points. Crucially it does not point at the landmark cards at all: the biggest losses are a bare foreground with no litter layer, a midground hill with no erosion, and cloned conifers with no snags or age variety. Second: the instrumented stump run disproves my own diagnosis. The texture path is healthy — map assigned, neutral tint, thirty thousand UVs, correct colour spaces — and the pale slab is simply what the generator reconstructs from a photo crop of a stump sitting in grass. Six candidates is enough; the hunt stops, the procedural snag stands, and the card stays blocked in the open.",
      "evidence": "realism 58/100 (single reading, indicator only — not family G) · stump diagnosis retracted with log evidence · asset hunt stopped by decision",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "stump-texture-diagnostic",
      "date": "Jul 30",
      "time": "08:52 HST",
      "status": "in-flight",
      "title": "Attacking the stump as a bug: three hypotheses dead before a single license minute was spent",
      "detail": "The stump stops being an asset hunt and becomes a debugging job. Three of the cheap hypotheses died on local checks alone: the kit assigns the correct HDRP base-color property everywhere (not the legacy one), the extracted texture is a healthy brown bark image rather than a blank, and the mesh carries thirty-one thousand texture coordinates with every face indexing them. That leaves runtime assignment, colour-space flags, and post-import UV survival — so this capture is pure instrumentation: it logs what actually lands on the material at seat time, including the assigned map, the tint, both colour-space flags, and the UV channel lengths after Unity's own import. Nothing from this run gets promoted whatever it shows. In parallel, the campaign's first realism reading is being taken by an independent judge — no attempts had been made all week, and a measured number beats a guess.",
      "evidence": "H1/H2/H3 eliminated locally · diagnostic capture instrumented and running · first realism reading in flight (independent judge)",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "stump-blocker-named",
      "date": "Jul 30",
      "time": "08:35 HST",
      "status": "in-flight",
      "title": "Six stumps in, the real blocker finally has a name — and it isn't the stumps",
      "detail": "Scaling by stature instead of footprint solved the sizing problem outright: the generated stump seats at full drawn height and fills its box for the first time. Then its textures rendered as a pale cream mass — the second imported scan in a row to lose its material in this engine path, after four Sketchfab candidates fell to proportions or channels. That pattern is the finding: the stump card is blocked by the scanned-material import path, not by asset sourcing, and the fix is an in-Unity diagnosis of texture flags and UV sets rather than a seventh download. Reverted to the procedural snag; the kit keeps every gain — stature scaling, both converter gates, the scanned branch. The trail's lit foreground band is promoted and blend-verified.",
      "evidence": "stature scaling proven (1.00 m seat) · texture path named as the blocker · procedural restored · trail promoted with blend check",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "stump-scale-mode-lever",
      "date": "Jul 30",
      "time": "08:10 HST",
      "status": "in-flight",
      "title": "Second Meshy stump comes back squat too — so the kit learns to scale by stature instead of footprint",
      "detail": "The trunk-only crop generated cleanly and passed every gate, and then measured the same shape as the first: photo-derived reconstructions rebuild a wide flared base, so fitting them to the three-foot footprint leaves a knee-high stub either way. Rather than hunt a fourth asset, the kit gains a scale mode — fit the scan to its drawn stature instead of its footprint, and let the frame measure judge the base. That capture is building now, and it carries the trail's next lever with it: the last two waypoints walked right and away to ride the drawn sweep the blend showed them missing. Two levers, one seat, both roasted before anything is claimed.",
      "evidence": "Meshy trunk crop: gates pass, aspect unchanged (1.83x0.84x1.89) · kit stumpScaleMode added · compound capture building",
      "image": "/demo-base/compare/hiking-trail-blend-50.png"
    },
    {
      "id": "trail03-iter2-promoted",
      "date": "Jul 30",
      "time": "07:57 HST",
      "status": "in-flight",
      "title": "The path is in the sun and under his boots — the blend says the exit still misses right",
      "detail": "Pulling the exit closer to the camera worked: the walked band now runs unbroken from beneath the hiker's boots across the lit foreground, which is the heart of Adam's ruling and the first time the trail has read in daylight rather than shadow. Promoted as the working state. But the blend check — mandatory now before any pass word — shows the built band sitting below and left of the drawn sweep as it approaches the corner, so the card stays open with a precise next lever: walk the last two waypoints right and away until they ride the drawing. Meanwhile the stump's second Meshy generation is running from a trunk-only crop, cutting the root flare that made the first one knee-high.",
      "evidence": "iter2 promoted · blend regenerated on the new hero · exit offset named, not claimed · Meshy task 019fb407 in flight",
      "image": "/demo-base/compare/hiking-trail-blend-50.png"
    },
    {
      "id": "blend-instrument-adopted",
      "date": "Jul 30",
      "time": "07:42 HST",
      "status": "in-flight",
      "title": "The blend settles it: the drawn trail is a broad sweep across the whole foreground",
      "detail": "First run of the new sketch-blend instrument, and it earns its keep immediately — laid at 50% over the current capture, the drawn trail is unmistakably a wide band crossing the bottom of the frame, entering lower-left and exiting lower-right, exactly as Adam's overlay ruled and not the crest thread built earlier. It also shows the rebuilt band sitting slightly high and narrow against the drawing. Iteration two pulls the exit half a meter closer to the camera to test the lit near face and widens the tread toward the drawn breadth. From here every sketch-match claim gets a blend behind it before the word 'passing' is used anywhere.",
      "evidence": "blend-50 generated and read · route confirmed as foreground sweep · iter2 building (exit +1.1 m nearer, width 1.05)",
      "image": "/demo-base/compare/blend-50.png"
    },
    {
      "id": "trail03-iter1-verdicts",
      "date": "Jul 30",
      "time": "07:27 HST",
      "status": "in-flight",
      "title": "First pass on Adam's foreground route: the hiker really does stand on it — the rest is shadow and a knee-high stump",
      "detail": "The re-threaded trail now runs under the hiker's boots exactly as the overlay demands, and that segment reads as genuine walked ground in the sun. The front-of-log crossing lands in the rock face's true shadow and reads subdued — next iteration tries the lit lower band, or presents the shadow case honestly under the same lighting-truth standard as before. The Meshy stump cleared every gate and then failed the only one that counts: seated by its footprint width, the photoreal ref's wide root flare leaves it knee-high and hidden behind the log. Reverted to the procedural snag; the next generation uses a trunk-only crop of the same ref so the proportions land near the sketch's square stance. All state recorded; handoff current.",
      "evidence": "TRAIL-03 iter1: underfoot pass READS · log-front in true shadow · Meshy stump 0.33 m — box fail, reverted · trunk-crop resubmit queued",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "trail03-foreground-rethread",
      "date": "Jul 30",
      "time": "07:12 HST",
      "status": "in-flight",
      "title": "Adam's overlay redraws the route: the trail belongs in the FOREGROUND, underfoot — re-thread building",
      "detail": "The trail pass is reverted and owned: Adam's green overlay puts the route on the camera side of both stump and log — a foreground diagonal the hiker literally stands on — not the knoll-crest thread built before. TRAIL-03 is pre-registered with his four marks un-projected through the locked lens: ford entry far left, bank descent, THROUGH the hiker's boots, past the stump's front face, across the lower-right foreground in front of the log, exiting the corner. Riding the same capture: the Meshy-generated stump from the photoreal ref, which passed both converter gates clean (neutral albedo, single material) — its squat proportions face the green-box measure next. Roast targets: boots-on-path contact, stump-front pass, log-front exit.",
      "evidence": "TRAIL-03 pre-registered (revert clause: restore trail02h) · Meshy stump gates PASSED · compound capture building",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "trail-pass-reverted",
      "date": "2026-07-30",
      "time": "07:04 HST",
      "status": "blocked",
      "title": "Trail pass REVERTED — Adam's sketch overlay shows the route belongs in the foreground",
      "detail": "Adam overlaid the v12 sketch on the current capture with the intended green route: it descends from frame-left behind the Hiker, passes in FRONT of the stump, and exits bottom-right in front of the Old Log. The promoted thread does not follow that line, so the supervisor's pass ruling was wrong. Card back to failing; progress 27%→18% (2/11 milestones). Worker re-tasked with the exact overlay geometry after the in-flight Meshy stump download completes.",
      "evidence": "Adam overlay, 2026-07-30 morning HST",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "stump-meshy-submitted",
      "date": "Jul 30",
      "time": "07:00 HST",
      "status": "in-flight",
      "title": "The stump goes to Meshy: the sketch-conditioned photoreal ref, cropped tight, is generating its 3D self",
      "detail": "Owning the idle stretch after the trail landed — resuming on the coordinator's kick. The new photoreal reference is exactly what the card needs: sawn top, visible growth rings, root flare, matching the 3-foot contract. The stump is cropped tight from the ref per the element-recovery rules (pool and background removed) and submitted to Meshy image-to-3D on the proven pipeline that produced the Old Log — quad topology, 30k polys, PBR textures. On completion: the converter's new channel-sanity and multi-material gates run first, then the kit seats it at the green box, zoomed roast before any promote. Sketchfab route remains the fallback with four rejects and one open mystery on record.",
      "evidence": "Meshy task 019fb3f8 submitted (meshy-6, quad, 30k, PBR) · crop registered at data/model-sources/meshy-crops/ · gates armed",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "supervisor-stall-owned",
      "date": "2026-07-30",
      "time": "06:59 HST",
      "status": "blocked",
      "title": "Honest stall report: 142-minute board gap, worker idle — loop restarted",
      "detail": "Supervisor error: after the Trail pass and stump-gate landing, the worker was never re-kicked and the supervision wakeup lapsed while watchtower asset work ran. No landmark progress in that window. Fixed now: valley-loop resumed on the Stump slot with the new sketch-conditioned stump reference as a Meshy image-to-3D source; wakeup re-armed. Campaign math: 27% vs 75% target, realism 48/80, 0/2 eighty-readings, 6.2 days left.",
      "evidence": "Bad-news audit 06:56 HST",
      "image": "/demo-base/refs/stump-photoreal.png"
    },
    {
      "id": "photoreal-refs-v2-sketch-conditioned",
      "date": "2026-07-30",
      "time": "05:20 HST",
      "status": "done",
      "title": "Photoreal reference set v2 — sketch-conditioned redo",
      "detail": "All nine landmark refs regenerated per Adam's directive with the v12 napkin sketch as the image input (image-gen --edit on squared sketch crops), so proportions now follow the drawing instead of text-only prompts. Every landmark passed the roast on the first try (no retries): split-rock, hiker, hiking-trail, stump, rock-outcrop, sapling, old-log, spring-pool, plus the full-scene composition rendered from the entire sketch at 16:9. Tower kept from the earlier sketch-conditioned redo (ForgeMedia 526365d9). All refs upscaled via Real-ESRGAN to 2048 and re-uploaded to ForgeMedia with sketch-conditioned tags.",
      "evidence": "ForgeMedia images/1785422114-split-rock-photoreal.png … images/1785422155-napkin-full-scene-photoreal.png (9 uploads, all 200)",
      "image": "/demo-base/refs/napkin-full-scene-photoreal.png"
    },
    {
      "id": "watchtower-asset-pipeline",
      "date": "2026-07-30",
      "time": "04:19 HST",
      "status": "done",
      "title": "Watchtower asset pipeline proven: sketch → photoreal → turnarounds → 3D model",
      "detail": "Per Adam's directives this hour: the napkin lookout crop was upscaled to 2048 and posted to ForgeMedia; a sketch-conditioned photoreal tower (correct squat proportions) replaced the text-only v1; front/back/right turnaround elevations were generated for the 3D modeler; and Meshy multi-image-to-3D built a textured GLB from those three views (quad, PBR) — on ForgeMedia as model 4bae34b4. Full v12 scene also rendered photoreal sketch-conditioned. A refs-redo agent is regenerating all nine landmark refs from sketch crops. Slack post in #forgescene.",
      "evidence": "ForgeMedia models/1785421004-firewatch-tower-meshy.glb; Slack ts 1785421042",
      "image": "/demo-base/updates/firewatch-tower-meshy-thumb.png"
    },
    {
      "id": "photoreal-reference-set-landed",
      "date": "Jul 30",
      "time": "03:45 HST",
      "status": "accepted",
      "title": "Photoreal reference set landed — all nine landmarks plus the full napkin scene at 2048",
      "detail": "Generated a photorealistic 2048x2048 reference image for every landmark card — hiker, lookout tower, hiking trail, stump, split rock, rock outcrop, sapling, old log, and spring pool — plus one full-scene photograph of the entire v12 napkin composition with every landmark in its sketched position: hiker left-foreground walking toward the lookout on its hill right-of-center, twin spires left-of-center, stump at center, fallen log across the foreground trail, spring pool right, sapling far right, snow-capped range behind. All ten match the alpine granite golden-hour quality bar and are published to ForgeMedia with dimension contracts in their descriptions.",
      "evidence": "10 images at 2048x2048 in /demo-base/refs/ · all published to ForgeMedia (project forgescene, tags forge-valley,photoreal-ref,ai-gen) · zero retries needed",
      "image": "/demo-base/refs/napkin-full-scene-photoreal.png"
    },
    {
      "id": "trail-card-passes",
      "date": "Jul 30",
      "time": "05:40 HST",
      "status": "accepted",
      "title": "The trail passes — third card through, and the shadow that looked like a bug was the sun telling the truth",
      "detail": "Supervisor ruling: the dark crossing band tracks the log's cast shadow consistently with every tree shadow in frame, the gravel runs continuous through it, and the sunlit segments read as proper brown dirt — truthful lighting, no physical errors. With sketch match confirmed on entry, the behind-the-hiker pass, the stump brush, the under-log crossing, and the bottom-right exit, the card flips to PASSING with its two declared route deviations honestly on record: the horizon-clipped entry points and the water-edge re-entry. Progress re-derived for the nine-card order Adam set: three of eleven milestones, 27%. Eight iterations, three transferable lessons in the ledger, and a kit that now dresses trails in the terrain's own materials.",
      "evidence": "trail PASSING (3/9 cards, 27%) · supervisor lighting ruling: truthful · proof crop committed · mapping re-derived for 9 cards",
      "image": "/demo-base/updates/trail-crossing-proof.png"
    },
    {
      "id": "seam-resolved-session-close",
      "date": "Jul 30",
      "time": "05:15 HST",
      "status": "accepted",
      "title": "The seam confesses: half terminator, half plastic — and the plastic half is dead",
      "detail": "Giving the trail ribbon the terrain layer's own normal map ended the sheet-on-a-hill read: the crossing now merges into the gravel it lives on, and the hard diagonal turns out to be the log's true shadow line plus a surface-response mismatch that no longer exists. The remaining darkness is honest lighting — the gold grass beside it is simply outside the shadow. The stump scan round closed on its clause: perfect proportions from the manifest gate, broken texture channels in the render, reverted to the de-boxed snag with a converter channel-sanity check queued for the next hunt. Everything promoted; the trail card awaits the supervisor's pass on the lighting question.",
      "evidence": "final01 promoted · ribbon wears layer albedo + normal · seam resolved · stump scan clause-reverted · previews regenerated",
      "image": "/demo-base/landmarks/hiking-trail.jpg"
    },
    {
      "id": "trail-one-residual",
      "date": "Jul 30",
      "time": "04:40 HST",
      "status": "in-flight",
      "title": "Supervisor verdict: soil yes, sunlight no — the trail is one exposure fix from passing",
      "detail": "The crossing now reads as dirt, but it reads as MIDNIGHT dirt next to gold morning grass — the compacted-earth tint is fighting the layer's own albedo, and one hard diagonal edge mid-crossing needs a determination: log shadow terminator or geometry seam. Both fixes are staged to ride the next capture rather than burn their own seat. Main thread per the approved plan: the stump scan hunt, now with manifest-stage bounds gates — every candidate gets downloaded, converted, and aspect-checked locally before any Unity license minute is spent. The de-boxed snag holds the fort meanwhile.",
      "evidence": "trail: 2 residuals staged for next capture · stump hunt: proportion gates at manifest stage · cadence current",
      "image": "/demo-base/landmarks/hiking-trail.jpg"
    },
    {
      "id": "trail02-supervisor-fixes-landed",
      "date": "Jul 30",
      "time": "04:27 HST",
      "status": "accepted",
      "title": "Both supervisor hits closed: the trail wears real soil, and the box was a stump wearing the wrong angle",
      "detail": "Root causes, not patches: the crossing's marbled tile was the cloned bark material's own texture riding along — the ribbon now wears the exact terrain layer the splat paint resolves, world-tiled, double-sided, sampled at seventy centimeters so the crest fold disappeared. The beige cube was the procedural stump showing two flat facets at its new angle; twenty-four sides, ring noise, and a corner toward the lens de-boxed it into a credible snag — while the scanned replacement remains the stump slot's real fix. Zoomed roasts on both zones are clean. Promoted with all previews regenerated.",
      "evidence": "trail02h promoted · ribbon wears Grass_Soil_A · 116 samples · stump 24-gon corner-on · both zones roast-clean",
      "image": "/demo-base/landmarks/hiking-trail.jpg"
    },
    {
      "id": "trail02-supervisor-fixes",
      "date": "Jul 30",
      "time": "04:15 HST",
      "status": "in-flight",
      "title": "Supervisor roast lands two hits — the plank was stone tile, and the stump was a box all along",
      "detail": "Two confirmed defects, both root-caused in code rather than patched: the trail ribbon's ugly crossing was inheriting a marbled stone texture from a cloned bark material (now a dedicated untextured dirt, double-sided so folds cannot render black), and its facets were two-meter line segments on a sharp crest (sampling densified to 0.7 m). The second find is embarrassing and fair: the procedural stump at its new angle shows two flat sides to the camera and reads as a raw beige cube. It gets 24 sides, ring noise, and a corner toward the lens as the interim de-box — the real fix remains the scanned asset in the stump's own slot. Recapture building; both zones get zoomed roasts before anything promotes.",
      "evidence": "root causes: bark-clone texture + 2 m facets + 14-gon flat facets · fixes compiled clean · capture building",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "trail02-working-state",
      "date": "Jul 30",
      "time": "04:02 HST",
      "status": "in-flight",
      "title": "The green route is real: under the log, past the stump, honest about its one remaining corner",
      "detail": "Six iterations turned an invisible painted line into a worn dirt path that does what Adam drew — passes the stump, dives under the Old Log, exits right. Three lessons now in the ledger: a route un-projected from a sketch exists in the world but only camera-facing slopes ever show it; splat paint alone cannot beat a dark rock face; and a ribbon mesh needs organic edges or it reads as lumber. Promoted as the working baseline because every landmark measures at least as well as before and the trail measures far better. The card stays failing on one named defect — a single hard fold where the ribbon crosses the crest — with its fix (denser sampling) queued as the next lever.",
      "evidence": "trail02f promoted · under-log crossing per sketch · residual: crest fold corner · all other telemetry unmoved",
      "image": "/demo-base/landmarks/hiking-trail.jpg"
    },
    {
      "id": "trail02-plank-fight",
      "date": "Jul 30",
      "time": "03:50 HST",
      "status": "in-flight",
      "title": "The trail shows itself — then confesses it looks like a plank",
      "detail": "Five iterations into the green route: the crossing finally reads passing the stump and diving under the Old Log exactly as drawn, but the dirt ribbon roasted as a laid board — hard straight edges and specular glare. A splat-only test proved the other extreme (the dark rock face swallows paint entirely), so the ribbon is back with organic per-sample edge jitter and a darker, rougher dirt. The far-side-drape lesson is in the ledger: un-projecting a sketch line onto terrain puts the route in the world, but only camera-facing slopes ever show it — visibility is a placement constraint, not a paint constraint.",
      "evidence": "TRAIL-02 iters 1-5 in EXPERIMENTS.md · under-log crossing per sketch confirmed · organic-edge iteration building",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "lookout-card-passes",
      "date": "Jul 30",
      "time": "02:57 HST",
      "status": "accepted",
      "title": "The lookout passes — a tower at true scale, a stair you can climb, and a hill that finally stopped being a cone",
      "detail": "Second card through the bar, and the meter moves to 20%. The tower stands exactly thirty feet ground-to-rooftop — five times the hiker, by construction — with its cab re-proportioned so it no longer reads as a mushroom on stilts, and a two-flight stair whose diagonal is the single detail every real fire lookout shares. The hill under it took four asymmetry passes: a summit knob, an east shoulder, and a west flank rib and notch that finally broke the ruler-straight edge the judges kept flagging. The height cut halved the tower's frame share exactly as pre-registered, so the silhouette floor re-froze in its own labelled commit, derived from the contract rather than fitted to the scene. One self-inflicted regression caught by the same gate check: a banked stump scan was still wired into two captures — reverted before anything promoted.",
      "evidence": "lookout PASSING (2/8, 20%) · verdict clean under re-frozen floor · four feet planted · roast in EXPERIMENTS.md",
      "image": "/demo-base/landmarks/lookout.jpg"
    },
    {
      "id": "lookout30-arc-building",
      "date": "Jul 30",
      "time": "02:52 HST",
      "status": "in-flight",
      "title": "Lookout arc building: the 30-foot tower, a stair you can climb, and a hill that stops being a cone",
      "detail": "Adam's canonical order puts the lookout first, and all three roast defects ride one capture: the tower rebuilt to the 30-foot contract with cab and bracing re-proportioned (a 5.5 m cab on a 9 m tower reads as a mushroom — now 40% of height in plan), a two-flight zigzag stair with landing and handrails on the camera-facing face, and three summit-asymmetry passes to break the ruler-straight cone the judges keep flagging. The height cut roughly halves the tower's frame share — that gate movement is pre-registered, and if it crosses the floor the re-freeze lands as its own labelled commit. Trail iteration 2 is banked meanwhile: the green route captured with a tan compacted-dirt ribbon and a gravel-bar ford where the sketch's left edge is water in-scene; its roast happens in the trail's slot, next after the lookout.",
      "evidence": "LOOKOUT-30 pre-registered (3 legs, separable reverts) · trail02b banked (13 waypoints, 892 cells) · capture building",
      "image": "/demo-base/landmarks/lookout-target.jpg"
    },
    {
      "id": "trail02-unproject-start",
      "date": "Jul 30",
      "time": "02:16 HST",
      "status": "in-flight",
      "title": "Trail campaign opens: Adam's green route, un-projected through the locked lens",
      "detail": "Owning another cadence gap overnight — the loop stalled after the stump scans and the bells rang into silence; that is on this desk. Resuming on Adam's priority: the trail. His green route is fourteen frame-fraction waypoints — a left arm entering upper-left and passing behind the hiker, and a foreground crossing that dives under the Old Log and exits bottom-right. The locked camera's exact position and look-at come from the scene report, projection verified against the stump's measured box (x within 0.001), with a small systematic vertical bias measured against known anchors and folded into the un-projection. Stump status, honest: two scans rejected for wrong proportions (pancake, ground skirt), the third offers no GLB transcode — the card stays failing on asset and the hunt resumes after the trail.",
      "evidence": "camera solved from scene-report heroPosition/lookAt · stump anchor reprojects to 0.482 vs measured 0.481 · 14 waypoints un-projecting · POOL-03 paused per Adam",
      "image": "/demo-base/landmarks/hiking-trail-target.jpg"
    },
    {
      "id": "stump02-iter1-flat-scan",
      "date": "Jul 29",
      "time": "20:18 HST",
      "status": "in-flight",
      "title": "The scanned stump arrived — and turned out to be a pancake",
      "detail": "The whole pipeline worked on the first pull: a CC-Attribution photoscan from Sketchfab, provenance registered, converted to Unity textures and mesh, and a new kit branch that seats any scanned stump at the exact 3-foot width contract. But the meadow scan is a low cut — at three feet wide it stands twenty centimeters tall, invisible behind the log's roots. Swapping to the Boubín stump by the same photoscanner, a tall forest snag that matches the sketch's proportion; the same pipeline runs again. Also caught and recorded: the offline compile check only covers the capture kit file, which let a one-line duplicate-field error cost a Unity run.",
      "evidence": "STUMP-02 iter1 in EXPERIMENTS.md · pipeline proven end-to-end · Boubín scan converting · provenance registered in asset-library.ts",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "resume-stump-asset",
      "date": "Jul 29",
      "time": "20:02 HST",
      "status": "in-flight",
      "title": "Back on the clock — owning the 64-minute gap; the stump asset hunt starts now",
      "detail": "Cadence lapsed for an hour after the yaw promotion; no work was lost, but the silence itself broke the contract and Adam's bad-news audit rightly flagged it. Resuming in value order: a real scanned stump to replace the smooth cylinder that is the stump card's only blocker (sourcing per the asset rules — Sketchfab free, Meshy from a photo crop, or ForgeMedia, provenance registered), then POOL-03 with the rim-annulus flatten the last revert prescribed, then the lookout 30-foot rebuild and the Split Rock slide plan. At 10% the Aug 5 target needs the big-ticket items — that is the honest math.",
      "evidence": "gap owned · stump sourcing per photo3d asset rules · POOL-03 design queued · big-ticket plans next",
      "image": "/demo-base/landmarks/stump.jpg"
    },
    {
      "id": "badnews-heartbeat-2020",
      "date": "Jul 29",
      "time": "20:01 HST",
      "status": "in-flight",
      "title": "Bad-news audit: loop idle 64 min, 7/8 failing, pool at zero after two reverts — restarted on the stump asset",
      "detail": "Blunt state per Adam's audit: one landmark passing, progress 10% against a 75% target, realism 48/80. The pool has no visible water after two honestly-reverted campaigns; Split Rock, the lookout rebuild, and the trail re-thread have not started and carry the gate re-freeze risk. The worker idles between pokes and the campaign has no scheduler by design — supervision is the only clock, and it has dropped twice today. Loop restarted on the scanned stump asset and POOL-03.",
      "evidence": "cadence 64m > 30m rule · 0 Unity processes · deploy operational · tree clean",
      "image": "/demo-base/latest/hero.png"
    },
    {
      "id": "hiker-faces-tower",
      "date": "Jul 29",
      "time": "19:05 HST",
      "status": "accepted",
      "title": "The hiker turns to face the tower — and the pool fight ends in an honest draw with new steel in the kit",
      "detail": "Adam's ruling landed: the hiker now faces the lookout tower, his yaw computed from his passed position straight to the tower's feet. The re-roast after the turn is clean — boots planted on the rise, contact shadow intact, framing unmoved — so his card keeps passing. The pool told a harder story: the new set-height terrain primitive collapsed the water guard's gap from 1.4 meters to five centimeters across three builds, but the pre-registered clause said two failures and it took three, so the config reverted per contract. The primitive itself stays in the kit, compile-checked, and the five-centimeter miss plus a rim-annulus design is written up for POOL-03's pre-registration.",
      "evidence": "yaw 347 → 5.3 accepted · re-roast clean, card holds · POOL-02 reverted per clause at a 5 cm miss · flatten primitive retained",
      "image": "/demo-base/updates/hiker-faces-tower.png"
    },
    {
      "id": "pool02-flatten-primitive",
      "date": "Jul 29",
      "time": "18:55 HST",
      "status": "in-flight",
      "title": "POOL-02 opens with new steel: the terrain kit learns to LEVEL, not just add",
      "detail": "The pool's eight refusals had one structural cause — additive sculpting cannot level a slope. So the sculpt kit now has a set-height primitive: an op that pulls terrain toward an absolute height with the same soft falloff, applied after the band ops it should level. First use is building now as a declared compound on one license seat: a leveled 6.5 m shelf on the terrace holds the nine-foot pool where the sketch puts it, and per Adam's ruling the hiker turns to face the lookout tower (yaw computed from his passed position to the tower's — 5.3 degrees). His card keeps passing only if the re-roast after the turn is clean: feet planted, shadows intact, centroid unmoved.",
      "evidence": "flatten primitive compile-checked · POOL-02 pre-registered with revert clause · hiker yaw 347 → 5.3 · capture building",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "supervision-gap-restart",
      "date": "Jul 29",
      "time": "18:48 HST",
      "status": "in-flight",
      "title": "Three-hour gap owned and closed: the supervisor dropped its own wakeup — loop restarted on POOL-02 and the stump asset",
      "detail": "After the hiker-pass session closed at 15:32 the supervision timer was never rearmed, so no fire poked the loop for three hours. No work was lost — the hiker still passes, the promoted baseline holds — but no work happened either. Restarted now with the queued list: POOL-02 authored basin, scanned stump asset (the 8 m stump reads as a blocky cylinder), lookout 30-ft rebuild with stair, Split Rock 18-ft slide with gate re-freeze, trail re-thread.",
      "evidence": "gap 15:32–18:47 HST · zero regressions · queue unchanged · wakeup re-armed",
      "image": "/demo-base/latest/hero.png"
    },
    {
      "id": "trail01-width-met",
      "date": "Jul 29",
      "time": "15:50 HST",
      "status": "accepted",
      "title": "Trail hits its 3-foot contract — and honestly stays failing until it sweeps the foreground",
      "detail": "The path is now exactly three feet wide, its visibility floor clears with room to spare, and nothing else moved. The card stays failing on sketch match: the drawing sends the trail sweeping through the left foreground under the hiker's boots, and the built path never enters the near band. That re-thread rides with the rebuild's next terrain phase. Every contract dimension that could be met without the authored pool or new assets is now met: hiker 1.83 m, stump 3 ft in its box, log at sketch proportion, trail 3 ft wide.",
      "evidence": "trail sil 0.0089 (floor 0.004) · 634 painted cells at 0.91 m · promoted · card failing on sketch-match only",
      "image": "/demo-base/landmarks/hiking-trail.jpg"
    },
    {
      "id": "intimate-band-promoted",
      "date": "Jul 29",
      "time": "15:38 HST",
      "status": "accepted",
      "title": "The intimate near band is the new baseline: stump clears its floor for the first time, log at sketch scale, nothing lost",
      "detail": "After the pool revert, the verification capture measured strictly better than the old baseline everywhere it differs: the stump's visibility jumped nineteen-fold as it slid from 35 m into its green box, the log lies at true sketch proportion against the hiker, the hiker holds his passed pose, and the far pool is exactly as visible as before — its intimate rebuild now belongs to the authored-basin experiment. Promoted to the board with all eight landmark previews regenerated. Honest ledger: hiker remains the only PASSING card; stump and log advanced but still fail the roast bar on asset quality and crowding.",
      "evidence": "intimate-band-01 scene report saved · stump sil 0.0195 (floor 0.002) · previews regenerated · 1/8 passing, 10%",
      "image": "/demo-base/landmarks/stump.jpg"
    },
    {
      "id": "pool01-reverted",
      "date": "Jul 29",
      "time": "15:30 HST",
      "status": "reverted",
      "title": "The pool wins round one: eight iterations, honest revert, and a lesson worth the seat time",
      "detail": "Every sculpting strategy failed the water-physics guard — and the last iteration confessed the structural reason: additive terrain ops cannot LEVEL a slope. A flat-topped bench added to a grade is still a grade, a dig's rim inherits the same gradient, and near this site something even eats the digging (the bed center rose while the dig deepened — that needs code reading, not more seat burns). The pre-registered failure clause did its job: the sculpt path is declared dead, the config is reverted to the last good state, and the intimate pool moves to the authored-basin route — a real modeled pond bed, seated by the kit, that does not depend on terrain math. The promoted baseline on this board still shows all four required landmarks; nothing regressed.",
      "evidence": "POOL-01 REVERTED in EXPERIMENTS.md · dead end recorded in art LEARNINGS · revert-verify capture running · POOL-02 (authored basin) next",
      "image": "/demo-base/updates/log06-wip.png"
    },
    {
      "id": "pool-texel-lesson",
      "date": "Jul 29",
      "time": "15:26 HST",
      "status": "in-flight",
      "title": "The pool refuses four times — and confesses why: the terrain can't hold features smaller than two meters",
      "detail": "Sliding the nine-foot pool to its sketch spot keeps tripping the water-physics guard: its downhill lip always ends up under its own bed. The reason turned out to be resolution, not placement — the terrain stores about one height sample every two meters, so a five-foot digging radius literally cannot exist in the data. This also explains every stubborn rise of the afternoon. One more sculpt attempt is building with everything sized above the sample grid; if the guard trips again, the pool moves to the authored basin route that was already queued from the old campaign. CORRECTION, twenty minutes later: the build log shows the terrain stores a sample every half meter, not every two — the digging was applying all along. The real culprit is the terrace’s own east shoulder, which drops most of a meter across the pool’s rim, so the downhill lip always undercuts the bed. The terrace itself now slides east so its flat top holds the pool.",
      "evidence": "POOL-01 iters 1-5 recorded · correction in EXPERIMENTS.md · iter6 building (terrace east shift)",
      "image": "/demo-base/updates/log06-wip.png"
    },
    {
      "id": "stump-log-band-converging",
      "date": "Jul 29",
      "time": "15:20 HST",
      "status": "in-flight",
      "title": "Stump in its box, log back in frame — the near band is assembling itself the sketch's way",
      "detail": "Six log iterations found the arrangement: the 5 m deadwood lies right of the stump with its root wad clear of both figures, the stump's cut face peeks exactly inside its green target, and the hiker holds his passed pose untouched. Open defects, named honestly: the root spikes crowd the stump's right edge, the stump still reads as a smooth cylinder up close, and the pool is now fully hidden behind the raised band — so the pool slides in next (nine feet wide at nine meters, right of the stump, exactly where the sketch puts it). No promotion until the pool is back in the hero; the promoted baseline still satisfies all four required landmarks.",
      "evidence": "log06 telemetry: log seated -18.01 on the crest · stump visible in box on zoom · pool occluded (POOL-01 pre-registering)",
      "image": "/demo-base/updates/log06-wip.png"
    },
    {
      "id": "near-terrace-lands",
      "date": "Jul 29",
      "time": "14:58 HST",
      "status": "in-flight",
      "title": "The near terrace replaces the mesa — figures planted, no walls, and the log pays the price",
      "detail": "Steep local bumps kept clamping into vertical grass walls, so the whole figure band now rides one broad gentle terrace — hiker at his target, stump on the crest in its green box, slopes that pass a zoomed look. Two honest problems from the same frame: the stump asset itself reads as a smooth wooden cylinder at eight meters (a scanned stump is queued as its own experiment), and the raised band now hides the Old Log behind the crest — a required hero landmark. The log slides onto the terrace next, rescaled to the sketch's proportion against the hiker (the current 13 m trunk is triple the drawn size at this depth).",
      "evidence": "terrace02 telemetry: hiker -18.17 (target -18.26), stump -18.53 · walls gone on zoom · log occluded, slide pre-registering",
      "image": "/demo-base/updates/terrace02-wip.png"
    },
    {
      "id": "stump01-iterating",
      "date": "Jul 29",
      "time": "15:08 HST",
      "status": "in-flight",
      "title": "Stump sliding to its green box — the near field keeps teaching the same lesson",
      "detail": "The stump moved from 35 m out to 9 m on its own camera ray, exactly 3 feet wide — and landed two meters below the camera's terrain, just like the hiker did. Three terrain iterations so far: a small rise under it got shaved by the slope clamp (steep little bumps don't survive), so both figures now share ONE knoll centered between them — the sketch draws them on the same rocky band, and the geometry now says the same thing. Iteration four is building: the knoll biased toward the hiker, whose natural ground sits 0.8 m lower. Each capture verifies BOTH figures' ground heights from the kit telemetry before any claim touches the board.",
      "evidence": "STUMP-01 iters 1-3 in EXPERIMENTS.md · slope-clamp lesson recorded · iter4 building · hiker card unaffected until re-roast",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "hiker-card-passes",
      "date": "Jul 29",
      "time": "14:38 HST",
      "status": "accepted",
      "title": "The hiker passes — first card through the new bar, and the meter moves off zero",
      "detail": "Three capture iterations closed it. The kit staged him perfectly all along — the killer was terrain: his ground sat 2.6 m below the camera's, dropping his whole body out of the bottom of the frame. The sketch had drawn the answer the whole time: the man stands ON rocks. A tight rocky rise now lifts his ground, and the promoted hero measures him at head 0.45 / feet 0.79 / body x 0.24 against the green target of 0.47 / 0.78 / 0.24-0.32 — boots planted, contact shadow, walking away toward Split Rock at exactly 1.83 m. The tower leg fix rode the same captures: all four feet now sit on the summit (worst extension 1.0 m, down from 5.8). The lookout card still fails the new bar — wrong scale for the contract, and no stair — but its floating legs are gone. Progress: 10%.",
      "evidence": "hero promoted · 8 landmark previews regenerated · hiker card PASSING · seat telemetry drops 0.25/0.48/0.25/1.02 · roast attached in EXPERIMENTS.md",
      "image": "/demo-base/landmarks/hiker.jpg"
    },
    {
      "id": "compound-iter1-roast-fail",
      "date": "Jul 29",
      "time": "14:32 HST",
      "status": "in-flight",
      "title": "First capture in five hours — and the roast rejects it: the hiker fell out of the bottom of the frame",
      "detail": "A license seat finally freed and the staged capture ran. The kit did its job — hiker exactly 1.83 m, seated on his ground — but that ground sits 2.6 m below the camera's own terrain, so seven meters out his whole body drops below the frame edge. The sketch had the answer all along: it draws the man standing ON rocks. Fix now building: a tight 5 m rise under his feet lifting the ground about 3.6 m so his boots land where the green target needs them. The tower's new per-foot seat helped but did not pass — the right feet sit, the left pair overhangs the hill face on long extended legs, so the footprint slides 1.5 m uphill toward the summit. Neither claim gets promoted until the zoomed roast crops pass. Recapture running on the open seat.",
      "evidence": "iter1 log verified: hiker staged, seat telemetry 22.89/21.11/17.36/18.66 · fixes: HikerRise op + tower uphill shift · iter2 building",
      "image": "/demo-base/landmarks/stump-target.jpg"
    },
    {
      "id": "supervisor-direct-capture-attempt",
      "date": "Jul 29",
      "time": "14:23 HST",
      "status": "in-flight",
      "title": "Supervisor took the wheel: capture attempt running right now on adamobook",
      "detail": "The worker's retry loop and cadence bell die between its runs, so the board went quiet twice — the supervisor now drives directly. Kit and config verified synced in the Unity project (hiker 1.83 m at his left-foreground mark, per-foot tower seat compiled in), stale locks cleared, and the compound capture is executing in the background as both the real work and the honest license retry. If Cedar grants a seat this run produces the hiker+tower proof captures; if it 429s, the failure posts here and retries continue on the supervisor's own clock.",
      "evidence": "kit md5-matched to source · config md5-matched · locks cleared · capture PID live",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "lookout-detail-roast",
      "date": "Jul 29",
      "time": "12:15 HST",
      "status": "accepted",
      "title": "Roast of the Lookout detail: five common-sense failures, written down before anyone repeats 'grounded'",
      "detail": "Adam called for a roast of the Lookout close-up and it fails on sight: (1) the downhill legs terminate in mid-air — the truss perches past the summit with clear sky under its left corner; (2) there is no way up — no staircase, no ladder, nothing connecting the ground to the cab on a tower whose entire purpose is climbing; (3) strong low sun, yet not one leg casts a contact shadow on the summit, so the tower reads pasted-on; (4) the hill itself is a geometrically perfect cone with a ruler-straight silhouette — the exact repeated-cone artifact the judges keep naming; (5) no access trail exists on any face of the hill. The per-foot seat fix covers (1); (2), (3) and (4) join the queue as their own items — a stair kit, and the cone gets resolved by the intimate rebuild's terrain pass.",
      "evidence": "roast on zoomed crops per SKILL.md protocol · leg fix staged · stair kit + cone silhouette queued",
      "image": "/demo-base/latest/detail/lookout-firewatch.png"
    },
    {
      "id": "campaign-window-open-cadence-1",
      "date": "Jul 29",
      "time": "11:50 HST",
      "status": "in-flight",
      "title": "Week-long campaign open: the meter resets honest, the hiker leads, and every seat in the company is still taken",
      "detail": "New window to Aug 5, 5 PM HST. Progress now means something you can count: 10% per landmark card passing the sketch-match + roast bar at the intimate scale (8 cards), 10% per realism reading of 80 or better (two needed). Nothing has passed that bar yet, so the meter restarts at 0 — the old 50% measured the retired vista bar. Work order: hiker first (he is the scale anchor; capture staged and compound with the tower-leg fix), then trail width, then the ray-slide rebuild. The only thing between the staged capture and the board is a Unity license seat: 20 straight rejections since 9:25, retrying every 4 minutes.",
      "evidence": "window set · mapping defined · NOW strip: hiker (started 09:24 HST) · seat retries: 20 across 2h25m",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "license-drought-heartbeat-1207",
      "date": "Jul 29",
      "time": "12:06 HST",
      "status": "in-flight",
      "title": "Still blocked on a Cedar license seat — retry loop live, full 4-hour autonomous window authorized",
      "detail": "Every ForgeFX Unity seat has been checked out since 09:25 HST; the retry loop asks for one every 4 minutes and the queued capture (hiker at his sketch position + per-foot tower seat, verified in one run) fires the moment a seat frees. Meanwhile Adam authorized four hours of unattended work: captures, license retries, pushes, and Slack on real events. The board also gains a working-hours readout on the NOW strip. Progress target for the window: 75%.",
      "evidence": "license 429 since 09:25 · retry every 4 min · capture compound staged · 4h autonomy granted",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "intimate-plan-and-license-blocker",
      "date": "Jul 29",
      "time": "10:50 HST",
      "status": "in-flight",
      "title": "Intimate rebuild planned as a ray-slide — while every Unity seat in the company is taken",
      "detail": "The rebuild plan is written before any terrain moves. Measured against the sketch's own drawn spans, the current scene already matches the sketch's frame POSITIONS almost exactly — the vista build got the angles right and the distances wrong. So the rebuild is a ray-slide: each landmark keeps its camera ray and slides inward to the distance its real size implies — spires from 133 m to 16 m, pool to 9 m, outcrop to 26 m, lookout to about 130 m — with floors, gates, and score history re-frozen on the new stack. Meanwhile the hiker capture has been queued since 9:25: the Cedar license server has rejected 18 straight lease requests (every ForgeFX floating seat is checked out). A retry loop polls every 4 minutes; the capture fires the moment a seat frees, then the tower-leg fix runs right behind it.",
      "evidence": "INTIMATE-REBUILD.md landed · ray-slide table derived from v12 spans · 18x HTTP 429 no-seat since 09:25 · retry loop live",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "landmark-gate-reset-roast-bar",
      "date": "Jul 29",
      "time": "09:38 HST",
      "status": "accepted",
      "title": "Adam resets the composition gate: all seven landmarks failing until they match the sketch and survive the roast",
      "detail": "New pass bar, from Adam: a landmark passes only when its position, scale, and orientation line up decently with the v11 dimensioned sketch AND a roast-style review finds no common-sense visual or physical errors — floating supports, missing contact, wrong scale against the six-foot hiker, shadow or seam defects. Every card resets to failing under this bar; the old position-only 7/7 stands as history but no longer counts as passing. Each card now names its specific gap.",
      "evidence": "7/7 position gates remain measured facts · pass bar now includes scale, orientation, and roast · per-landmark gaps on the cards",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "scale-audit-01-v11-contract",
      "date": "Jul 29",
      "time": "09:45 HST",
      "status": "accepted",
      "title": "v11 scale audit RESOLVED: Adam rules — rebuild intimate, every landmark at its literal sketch dimension",
      "detail": "Audited every v11 dimension against the live scene. Hiker: fixed to exactly 1.83 m this session. Trail: 0.7 m vs the 3-foot contract — safe fix, queued next. Stump: already right. The conflicts: Split Rock is built 75 m tall against the sketch's 18 feet, the pool 12 m against 9 feet, the outcrop and lookout roughly double their sketch size — and every one of those oversizes exists because the frame-share floors force it at this 300 m depth stack (even the 12 m pool already fails its visibility floor at 74 m out). The sketch describes an intimate ~50 m scene; the build is a 300 m vista. Two honest paths: treat v11 numbers as relative proportions and keep the vista, or rebuild to the intimate depth stack and re-freeze the seven position gates and the visibility floors. Nothing was resized beyond the hiker; the full table is in the ledger. RESOLVED (Adam, Jul 29): rebuild intimate. The valley becomes the sketch’s ~50 m scene — 18 ft spires, 9 ft pool, 30 ft lookout, 15 ft outcrop, 3 ft trail and stump, the 1.83 m hiker unchanged. The vista scaling is retired; position gates, visibility floors, and score history re-freeze on the new depth stack.",
      "evidence": "RULING: intimate rebuild · gates + floors to be re-frozen · plan being drafted before any terrain moves",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "hiker-sketch02-in-flight",
      "date": "Jul 29",
      "time": "09:29 HST",
      "status": "in-flight",
      "title": "Adam's overlay ruling: the hiker is a third of his sketch size — rescale in flight",
      "detail": "Adam overlaid the v11 sketch on the current hero and marked it: the scene hiker stands mid-ground near the stump, reading about a third of the height the sketch man should. The green target puts him large in the LEFT FOREGROUND — head near mid-frame, feet at the lower third, walking away toward Split Rock beside the trail. Fix in flight: he stays exactly 1.83 m tall (he IS the scale anchor; we never inflate the model), and moves from 24 m out to about 7 m from the frozen hero camera at frame-left. Capture running; proof crop follows.",
      "evidence": "HIKER-SKETCH-02 pre-registered · config-only · target: head y0.47, feet y0.78, body x0.24-0.32",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "napkin-v11-dimensioned-master",
      "date": "Jul 29",
      "time": "09:16 HST",
      "status": "accepted",
      "title": "The napkin gets its numbers: v11 dimensioned master sets the scale contract",
      "detail": "Adam's scale ruling is now drawn on the sketch itself: the hiker is a six-foot man, and every other measure hangs off him — Split Rock 18', the Lookout 30' ground to rooftop, the Spring Pool 9' at its widest, a 3' path and stump, a 15' outcrop, 9' and 18' saplings. v11 replaces v10 everywhere the sketch appears, including the blind-gate target the judges see. The board also gained proof thumbnails on all seven landmark cards and all updates, absolute timestamps, and an image-only lightbox.",
      "evidence": "v11 master live · blind-gate target repointed · 7/7 landmark crops · 119/119 update thumbnails",
      "image": "/demo-base/napkin-composition-v12-labels.png"
    },
    {
      "id": "fifteenth-reading-sprint-close",
      "date": "Jul 29",
      "time": "06:40 HST",
      "status": "accepted",
      "title": "Sprint close: fifteen panels, the honest number is 43 — and everything above it is real",
      "detail": "The final panel of the sprint returned the tightest agreement yet on all three views: worst 43, hero 47, left orbit 54. Yesterday's 46 rode one noisy view; this is the solid floor. The climb from 36 is carried by things that exist now and did not exist at sunset: ridge spines to the range, a drainage line with a wet wash, footslopes under every knoll, bedded outcrops sharing a dip, boulder heaps in the spires' own stone, a planted tower, a sealed pool, and a hiker for scale. The pile placement trades views — grounded from the orbits, a ledge-read from the hero for one judge — and that refinement leads the next list, alongside the mound-field question that awaits a ruling.",
      "evidence": "A6 sprint: 36 → 43 solid (46 peak on a weak panel) · hero 43.7 → 47.0 reliable · gates 7/7 across ~45 captures · two honest reversions, one stop-clause honored"
    },
    {
      "id": "fourteenth-reading-46-new-high",
      "date": "Jul 29",
      "time": "05:35 HST",
      "status": "accepted",
      "title": "The talus finally stands proud — and the worst view isn't the worst anymore",
      "detail": "Two modeled boulder heaps now stand off the slope at Split Rock's feet, in the spires' own stone. The view that had anchored the bottom of every panel jumped five points, the left orbit hit its best score of the entire sprint, and for the first time in fourteen blind panels the hero frame is the weakest view — meaning the composition's front door is now the frontier. The reading of 46 is the sprint's high, ten points above where the evening began. The judges' next asks are precise: bigger debris volume with less faceted lumps, a decision on the pale blob rock by the knoll, and the background snowline.",
      "evidence": "A6 trajectory 36→…→43→46 across 14 blind panels · worst view is now the HERO at 46.3 (spread 3) · left orbit 58.7 all-time high · gates 7/7 every capture"
    },
    {
      "id": "thirteenth-reading-43-night-close",
      "date": "Jul 29",
      "time": "04:00 HST",
      "status": "accepted",
      "title": "Night close: thirteen panels, 36 to 43, and every landmark still in place",
      "detail": "The talus skirt now drapes the ground perfectly — and in doing so taught the last lesson of the night: mass that hugs the hillside reads as hillside. Real talus stands proud. The reading returned to 43, the top of the established band, and for the first time in thirteen panels the night's harshest judge scored the scene HIGHER than everyone else. The sprint closes with the landform score up seven points from where the evening began, the position gates never broken across roughly forty captures, the tower planted, the pool sealed, the hiker walking his trail, and the remaining ceiling honestly split three ways: proud talus volume, the napkin's own composition seen from unsketchied angles, and the skybox snowline.",
      "evidence": "A6 trajectory 36→…→43 across 13 blind panels · gates 7/7 every capture · sonnet judge flipped from floor to high outlier"
    },
    {
      "id": "twelfth-reading-40-stabilized",
      "date": "Jul 29",
      "time": "03:10 HST",
      "status": "wip",
      "title": "Twelve panels in: the valley holds its gains, and the next jumps are named",
      "detail": "The talus and knoll rocks now wear the spires' own warm granite, and the west shore has a cut bank. The panel held the scene at its new level — worst view 40, left orbit at its best-ever 56 with near-perfect agreement. Over twelve blind panels the landform score has climbed from 36 through a failed-and-reverted erosion experiment to a stable 40-43. What remains is honestly categorized: some complaints target the napkin's own composition seen from angles the sketch never drew; the talus needs to be sculpted mass rather than scattered rocks; and the background snowline belongs to the skybox. Each is a different kind of work, and the record says which.",
      "evidence": "A6 trajectory 36→…→43→40 (stabilized 40-43 worst) · left orbit 55.7 spread 2 · gates 7/7 worst 3.59% throughout"
    },
    {
      "id": "eleventh-reading-43-plateau-broken",
      "date": "Jul 29",
      "time": "02:20 HST",
      "status": "accepted",
      "title": "Plateau broken: the rocks learned to share a bedding plane",
      "detail": "Giving every outcrop band a single dip and strike — the way real strata lie — and painting a wet wash channel down the drainage line moved the worst view to 43, the first reading above the band it had been stuck in all night. One judge explicitly credited the \"plausible near-horizontal bedding,\" and even the harshest judge posted its highest worst-view score to date. The judges' next demand is just as precise: the talus at Split Rock's feet reads as foreign rock because the blocks don't match the spires' own stone. Spires must sit in their own debris. That material-matching pass leads the next session.",
      "evidence": "A6 trajectory 36→…→35→41→35→40→43 (worst view, reliable spread 7) · gates 7/7 worst 3.59% · bedding credited verbatim"
    },
    {
      "id": "tenth-reading-40-geology-grammar",
      "date": "Jul 29",
      "time": "01:30 HST",
      "status": "wip",
      "title": "The judges taught us grammar: rock bands need a shared dip",
      "detail": "Rock now shows where soil cannot hold — the curvature-driven splat pass painted 80,000 points of exposed stone on steep convex ground, and the tower's hill finally has a rocky summit rather than turf running to the top. Three bands of embedded outcrop meshes joined it, and their reception was the lesson of the night: two judges independently read them as scattered blocks because every rock had a random orientation. Real outcrops share a bedding direction. The reading held at 40 with the panel's tightest-ever agreement across all three views. One tension is now documented for review rather than hidden: part of the repeated-cone complaint aims at the napkin's own mound composition seen from an angle the sketch never drew.",
      "evidence": "A6 trajectory 36→…→35→41→35→40 · first all-reliable panel (spreads 6/7/8) · gates 7/7 worst 3.59% · next: shared joint orientation per band, a real creek, snowline fix"
    },
    {
      "id": "ninth-reading-plateau-35",
      "date": "Jul 29",
      "time": "00:45 HST",
      "status": "incomplete",
      "title": "Two more levers, no movement: the shape score has found its plateau",
      "detail": "Deep gullies on the face the worst view actually sees, and a drainage swale chain from the saddle to the lake — both landed cleanly, and not one of five judges noticed either. The reading came back 35 with the tightest agreement yet, making four straight readings oscillating between 35 and 41. The mechanism is now understood: terrain cuts of a few meters vanish at three hundred meters under a uniform grass mantle. Breaking the plateau needs visible geology, not more terrain math — real rock outcrop meshes on the hill faces, an actual creek in the drainage line, and ground materials that change where the land is carved. That is the next session's work, with the curriculum's unimplemented step 3 as its backbone.",
      "evidence": "A6 trajectory 36→38→39→45*→38→27→35→41→35 · worst-view spread 2 · gates 7/7 worst 3.58% · even the harshest judge's floor rose"
    },
    {
      "id": "local-pass-a6-41-tower-planted",
      "date": "Jul 29",
      "time": "00:05 HST",
      "status": "accepted",
      "title": "The tower finally stands on its own legs — and the judges noticed the ground",
      "detail": "The fire tower had quietly been floating for hours — on a convex summit, seating it to the crest sample leaves the downhill legs in the air, and every promoted hero since the spectrum pass showed it when zoomed. It now seats to the lowest ground under its actual leg spread and bites in like a real ridgetop lookout. Same pass: colluvial footslopes under the knolls, a bigger talus field at the spire bases, the shore-gap under Split Rock closed, and the outcrop slab set into the flank as daylighting bedding. A five-judge panel moved the worst view from 35 to 41 and the hero to 50 — the second straight climb since the honest revert.",
      "evidence": "A6 trajectory 36→38→39→45*→38→27→35→41 · gates 7/7 worst 3.58% · levitation ruling closed for the tower"
    },
    {
      "id": "composition-p123-a6-35",
      "date": "Jul 28",
      "time": "22:55 HST",
      "status": "wip",
      "title": "The valley got its skeleton; the judges moved their aim",
      "detail": "Two ridge spines now connect the Lookout hill and Split Rock to the range, a drainage valley runs between them, and a piedmont apron softens the mountain front — all without moving a single landmark (the position gates stayed byte-identical). A five-judge panel scored the worst view 35: recovered from the erosion regression, statistically level with the pre-erosion baseline, with one judge reading the new connectivity as high as 55. The useful signal is where the complaints went: with the mid-ground connected, they now concentrate on the foreground knolls — the napkin's own mounds — and on the spire bases needing a talus contact that reads at distance. That is local sculpt and prop work, not more macro surgery.",
      "evidence": "A6 trajectory 36→38→39→45*→38→27→35 (*noise) · gates 7/7 worst 3.46% through all three phases · design: COMPOSITION-REWORK.md"
    },
    {
      "id": "hiker-glb-sketch-position",
      "date": "Jul 28",
      "time": "22:15 HST",
      "status": "accepted",
      "title": "The sketch hiker walks his trail",
      "detail": "The hiker is now the model generated from the new target sketch itself — same figure, same mid-stride pose, converted from the optimized source model with its own textures. He walks the western trail leg with his back to camera, headed toward Split Rock, feet on the dirt with a cast shadow. One honest deviation, flagged for review: the sketch marks him at the far-left trail bend, but that exact stretch is hidden in the render behind the old log and the shadowed dip, proven across three placement captures. He stands at the nearest fully-visible trail point instead. All seven landmark gates hold.",
      "evidence": "frame (0.40, 0.72) vs sketch (0.27, 0.64) — nearest visible trail point · gates worst 3.46% · both lanes synced"
    },
    {
      "id": "napkin-v10-hiker-master",
      "date": "Jul 28",
      "time": "21:45 HST",
      "status": "accepted",
      "title": "New target sketch: the hiker joins the napkin",
      "detail": "The composition contract is updated — same seven landmarks, now with a hiker walking the trail in the left foreground, seen from behind, headed toward Split Rock. He gives the whole sketch its human scale. His 3D model was generated from this exact sketch pose (three photorealistic reference views through Meshy), so the scene places the same figure in the same stance. The board now shows the new master; the previous napkin lives on in the milestones history.",
      "evidence": "sketch figure at frame ~(0.27, 0.64), back to camera, on the western trail stretch · scene hiker being re-placed to match"
    },
    {
      "id": "step2-stop-clause-a6-27",
      "date": "Jul 28",
      "time": "21:50 HST",
      "status": "rejected",
      "title": "Step 2 stopped by its own rule: erosion turns isolated hills into spoil piles",
      "detail": "The droplet erosion worked as engineering — it even silted up the spring pool on its first run, exactly as real drainage would — and the hero view improved again. But the blind panel dropped the worst view from 38 to 27, and the mechanism is now proven: any repose-driven process applied to isolated hill-blobs converges them to perfect constant-slope cones, the signature of a dump pile. An isolation test (thermal off) confirmed the convergence is inherent to the composition. The pre-registered rule said stop if the prediction fails, so this campaign is stopped and the scene is reverted to its best-scoring state, which keeps the improved near-field ground. The finding that matters: after six blind panels, the deepest blocker is compositional — the hills connect to nothing. Fixing that means restructuring the base terrain (ridgelines to the range, a real drainage valley, a piedmont), which touches the frozen camera and the napkin contract.",
      "evidence": "A6 trajectory 36→38→39→45*→38→27 (*noise) · stop clause honored · erosion machinery landed but off · gates 7/7 at the kept state"
    },
    {
      "id": "spectrum01-step1-a6-flat",
      "date": "Jul 28",
      "time": "20:35 HST",
      "status": "wip",
      "title": "Step 1 landed: the ground reads real; the shape judges are unmoved",
      "detail": "The spectrum-restoration pass is live — the meadow finally has hummocks, hollows, and slopes that hold to soil physics, and a hiker now walks the trail for scale. A fresh blind panel held the worst view at 38: expected in hindsight, because that instrument judges shape only and is told to ignore surface detail. What it still names is exactly what steps 2 and 3 attack: dome-shaped hills, a missing drainage network, no mountain-to-valley transition, and talus that is too shy to read. Step 2 ports the erosion simulation that already exists unused in the repo.",
      "evidence": "A6 worst view 38 (reliable, spread 6) · hero view 46.7 (spread 3) · gates worst 3.46% · step 1 of 3; ≥60-or-stop prediction stands"
    },
    {
      "id": "art-school-near-field-fundamentals",
      "date": "Jul 28",
      "time": "19:45 HST",
      "status": "accepted",
      "title": "Art school verdict: the land has no history",
      "detail": "A dedicated mentor process studied every render, all four judge panels, the napkin, and the sculpt kit source. Diagnosis: the entire terrain vocabulary is a single radial Gaussian bell — a sum of bells is all-convex, isotropic, and empty in the 0.5-10 m wavelength band the eye reads hardest at close range. The far mountains pass because distance only asks for silhouette; the near field asks for evidence that water ran, soil crept, and rock fell. The prescription, in order: clamp soil slopes and restore the frequency spectrum with domain-warped noise, then thermal + hydraulic erosion over the heightmap (machinery already exists unused in the repo), then curvature-driven rock exposure and moisture-driven grass. Registered prediction: this clears 60 on the worst view or the diagnosis is wrong and we stop.",
      "evidence": "full curriculum with receipts and pass-barred exercises: https://preview.forgefx.dev/near-field-fundamentals.html",
      "image": "/demo-base/attempts/scan-split-rock-live.jpg"
    },
    {
      "id": "a6-fourth-reading-45-erosion-round2",
      "date": "Jul 28",
      "time": "19:15 HST",
      "status": "accepted",
      "title": "Erosion round 2 moved the judges: landform 39 → 45",
      "detail": "A real talus apron now beds into Split Rock's base (rock props, embedded 40-60%, a fall-away test culls anything that would float) and three wide concave valleys break the all-convex terrain. A fresh blind panel moved the worst view from 39 to 45 and, for the first time, credited the spire footing: \"more rock material around their footing helps explain the transition.\" The hero view alone scored a reliable 52. Still named: the tower hill's symmetry, the missing drainage network, and the perched cap slab.",
      "evidence": "A6 trajectory 36 → 38 → 39 → 45 (worst view) · hero view 52.3 reliable · gates worst 2.72% · every landmark held"
    },
    {
      "id": "a6-third-reading-39-erosion-round1",
      "date": "Jul 28",
      "time": "18:30 HST",
      "status": "wip",
      "title": "Erosion round 1 carved in; the judges moved one point: 39",
      "detail": "Six gullies and a shoulder break on the Lookout dome, four drainage cuts on the meadow mounds — the carving is real (pixel-diff confirmed) and every landmark held position, but a fresh blind panel scored landform coherence 39, up from 38. Their complaint sharpened in a useful way: it is no longer \"no gullies\" but \"no concavity anywhere\" — a terrain summed from smooth positive domes is convex everywhere, and no real landscape is. Round 2 is structural: carved valleys between the hills, a visible talus apron at Split Rock, embedded boulders instead of perched ones, and a foothill band where the valley meets the mountains.",
      "evidence": "A6 36 → 38 → 39 (worst view, reliable spread) · gates worst 2.72% · dome carving 7.3k px vs 2k noise"
    },
    {
      "id": "pool-eyeline-campaign-parked",
      "date": "Jul 28",
      "time": "18:20 HST",
      "status": "incomplete",
      "title": "Pool eye-line: ten cycles, parked with a build plan",
      "detail": "The request stands: the viewer should look down at readable water. Terrain nudges could not deliver it — every sunken basin under this sun shades its own surface and reflects dark hillside, and any position where the surface shows sits lower in frame than the napkin target (the napkin's own geometry implies a foreground pond 27 m out). One levitation-free intermediate broke the trail gate and was reverted same-cycle. The scene is back at the last honest state; next session builds the pool properly: an elongated authored water surface with a flat near shore and a carved sky window behind the far rim so the water mirrors sky.",
      "evidence": "objective check each cycle: water on/off pixel diff at the pool — best ~1.3k px (readable needs thousands) · reverted to 7/7 worst 2.7%"
    },
    {
      "id": "napkin52-pool-sealed-a6-38",
      "date": "Jul 28",
      "time": "17:45 HST",
      "status": "accepted",
      "title": "Pool sealed; the judges re-scored the landform: 38 of 100",
      "detail": "The water plane that cut through the hillside was above its own lowest rim by construction — the kit placed pool water 0.45 m above the low lip. It now sits 0.35 m below, and the mid-slope water band is gone from the right orbit. A fresh blind panel re-scored landform coherence at 38 (was 36): the impossible blade complaint is dead, but every judge now names the same ceiling — the hills are too-perfect smooth cones with no gullies or drainage. That erosion pass is the next queue item.",
      "evidence": "worst landmark 2.73% vs 5% gate · A6 38/100 worst-view right orbit (panel spread 4) · pool leak sealed",
      "video": "/demo-base/updates/videos/napkin52-pool-sealed-a6-38.mp4"
    },
    {
      "id": "napkin50-scan-seven-of-seven",
      "date": "Jul 28",
      "time": "17:25 HST",
      "status": "accepted",
      "title": "Seven of seven again — with the real scanned Split Rock",
      "detail": "The scan kept its fracture faces and talus and finally sits inside the gate: talus trimmed in Blender (two earlier trims sliced the back of the mesh — world-vs-local axis bug — and loose vertices kept the old bounds), warm granite tint restored in the scan material path, the formation narrowed to fit its knoll, and a western shoulder sculpted so the lift stays grounded. The one levitating intermediate (crest-seat, 4.72% but floating) was rejected on sight.",
      "evidence": "splitRock 1.8% · lookout 2.5% · pool 2.8% · log 1.3% · outcrop 2.7% · stump 0.0% · trail 0.0% — worst 2.8% vs 5% gate"
    },
    {
      "id": "scan-split-rock-swap",
      "date": "Jul 28",
      "time": "21:05 HST",
      "status": "wip",
      "title": "Split Rock is now a real scanned formation",
      "detail": "Six placement cycles: the scan floated, buried itself, and finally seated to the mean footprint ground with a warm granite tint and its twin gap turned to camera. The judges' number-one impossibility — blades with no talus or jointing — is gone from the scene. The trade: the scan's talus base drags its measured centroid to 7.9% against the 5% gate, so the board honestly shows 6 of 7 until the last 2.9% closes.",
      "evidence": "shape: real fracture faces + talus · warm granite tint live · position tuning in progress (7.7% vs 5% gate this hour)"
    },
    {
      "id": "a6-first-reading",
      "date": "Jul 28",
      "time": "18:45 HST",
      "status": "wip",
      "title": "The landform judge delivered its first verdict: 36 of 100",
      "detail": "Three independent judges scored only the terrain shape, worst view counts. They agreed on the exact problems: the Split Rock blades could not occur in nature, the tower hill is too perfect a cone, and from the left orbit the pool is a sheet of water clipped into a hillside. The composition is right; the landform is not yet believable. This is the gap between where things ARE and whether the place could EXIST — and it is now measured on every capture. A rim plug was sculpted at the pool's downhill edge in the final cycle: the exposed water edge shrank and all seven landmarks held position, but the judges have not re-scored it yet.",
      "evidence": "hero 54.7 · orbit-left 36.0 (worst) · orbit-right 61.7 · spreads within tolerance"
    },
    {
      "id": "napkin39-seven-of-seven",
      "date": "Jul 28",
      "time": "18:10 HST",
      "status": "accepted",
      "title": "All seven napkin landmarks are in position",
      "detail": "Sixteen measured capture cycles. The unlock was terrain: the napkin draws one continuous rise from meadow to hill, and the valley now has it — a meadow shelf with a forward toe, an east ridge bridging to the Lookout hill, and the spring pool benched into its slope. Every landmark centroid sits within 5% of frame width of its napkin position, measured by the capture kit on every run.",
      "evidence": "splitRock 3.3% · lookout 2.5% · pool 2.4% · log 3.4% · outcrop 2.7% · stump 3.7% · trail 2.2%",
      "video": "/demo-base/updates/videos/napkin39-seven-of-seven.mp4"
    },
    {
      "id": "napkin39-seven-landmarks",
      "date": "Jul 28",
      "time": "15:40 HST",
      "status": "wip",
      "title": "All seven landmarks exist and are measured every capture",
      "detail": "The stump is built and in position on its own knoll. The trail is painted into the terrain and fords the creek at the rocks. The kit now measures every landmark screen position, distance, size, and heading on every capture, so placement is a feedback loop instead of eyeballing. Discovery of the day: the napkin midground rises while our valley fell toward the lake — the fix is sculpted elevation, one landform at a time.",
      "evidence": "stump 4.8% PASS · lookout 2.5% PASS · trail 7.5% · log 7.4% · pool 11.0% · outcrop 19.7%"
    },
    {
      "id": "napkin38-lookout-hill-landed",
      "date": "Jul 28",
      "time": "14:20 HST",
      "status": "accepted",
      "title": "The Lookout now stands on its hill",
      "detail": "Six capture cycles on the render machine: moved the tower to a sculpted hill (the napkin puts it ON a hill and the target spot was inside the lake), froze the hero camera so the move could not hide itself, fixed the orbit views to the 10-degree contract, and added a per-view camera-clearance pass after the left orbit camera landed inside a shrub. All three views are clean and live on this page.",
      "evidence": "cabin 4.5% off the napkin vs the 5% gate · hero + 10° orbits + detail shot updated",
      "video": "/demo-base/updates/videos/napkin38-lookout-hill-landed.mp4"
    },
    {
      "id": "spec-v4-lookout-hill-staged",
      "date": "Jul 28",
      "time": "16:20 HST",
      "status": "wip",
      "title": "Spec v4 locked and the Lookout hill fix is staged",
      "detail": "The napkin now has seven features (Stump and Hiking Trail added). Landmark positions were measured against the sketch; only Split Rock and Old Log are accepted. The Lookout move is fully computed: new spot, a sculpted hill under it (the sketch puts the tower ON a hill), and a frozen camera so the move cannot hide itself. It runs as one capture pass the moment a Unity machine with the demo assets is available.",
      "evidence": "napkin38-lookout-hill.config.json · reposition math in history/ · expected residual 2-4% vs the 10% gate"
    },
    {
      "id": "napkin-37-licensed-geological-scans",
      "time": "03:03 HST",
      "status": "wip",
      "title": "Two real mountain-rock scans are ready for the next picture",
      "detail": "We found and downloaded two rock formations that already have the tall natural shapes the sketch needs. Their engine picture is not ready because this Codex session hit its execution limit during conversion.",
      "evidence": "2 scans · 4 angles each · source recorded · engine picture pending · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-36-boolean-production-granite",
      "time": "02:45 HST",
      "status": "rejected",
      "title": "Split Rock is in the right place; the new rock shape is not good enough",
      "detail": "The two peaks line up with the sketch in the main, left, and right pictures. Their surfaces improved, but both still look like tall stone pillars instead of naturally broken granite.",
      "evidence": "3 views published · position correct · shape rejected · current build unchanged",
      "date": "Jul 28"
    },
    {
      "id": "realism-19-lens-vignette",
      "time": "02:35 HST",
      "status": "rejected",
      "title": "Darker picture edges looked like a filter",
      "detail": "All landmarks remained clear, but three fresh judges preferred the unfiltered picture. The darkened corners looked applied rather than naturally photographic.",
      "evidence": "3 views published · judges: 0–3 · exposure still valid · no score change",
      "date": "Jul 28"
    },
    {
      "id": "realism-18-sensor-grain",
      "time": "02:30 HST",
      "status": "wip",
      "title": "Subtle camera grain helped one judge, but did not win",
      "detail": "The grain looked natural and preserved every landmark. One judge preferred it; two saw no meaningful difference. We kept it as a weak result, not the new build.",
      "evidence": "3 views published · judges: 1 preferred, 2 tied · measured depth improved · no score claim",
      "date": "Jul 28"
    },
    {
      "id": "realism-17-supersampling",
      "time": "02:24 HST",
      "status": "rejected",
      "title": "Twice-resolution pictures made no visible difference",
      "detail": "We rendered every picture four times larger and reduced it to the normal size. Three fresh judges said the result looked the same, so it does not replace the current build.",
      "evidence": "3 views published · judges: 3 ties · landmarks preserved · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-35-continuous-fractured-granite",
      "time": "02:14 HST",
      "status": "rejected",
      "title": "Continuous rock removed seams, but still looked artificial",
      "detail": "Each peak is now one solid high-detail mesh with no stacked parts. The outlines still look like smooth upright pillars, not naturally broken granite.",
      "evidence": "3 views published · 68,070 triangles · no seams · shape failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-34-fused-granite-peaks",
      "time": "02:05 HST",
      "status": "rejected",
      "title": "Fused granite removed the shelves, but lost the twin peaks",
      "detail": "Deep overlap made the left rock look solid. The right rock became a low round boulder, so the pair no longer matches the sketch.",
      "evidence": "3 views published · seams improved · twin-peak shape failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-33-production-granite-tor",
      "time": "02:03 HST",
      "status": "rejected",
      "title": "Real granite texture, wrong stacked shape",
      "detail": "The existing production rock has believable cracks, but six large pieces look balanced in two piles. Split Rock must read as two solid broken peaks, so this version does not replace the accepted picture.",
      "evidence": "3 views published · correct position · stacked shape failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-32-buried-granite-skirts",
      "time": "01:57 HST",
      "status": "rejected",
      "title": "Buried bases worked, but the rocks still looked manufactured",
      "detail": "The flat bottoms are now hidden. The large upright slabs still look like two computer-made monoliths, so they do not replace the accepted version.",
      "evidence": "3 views published · grounding fixed · shape failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-31-independent-peak-grounding",
      "time": "01:44 HST",
      "status": "rejected",
      "title": "Separate rock bases still could not fit the steep hill",
      "detail": "Each peak now seats independently, but one height sample cannot fit a wide rock to the curved slope. Flat undersides remain visible.",
      "evidence": "3 views published · import fixed · terrain contact failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-30-grounded-granite-fins",
      "time": "01:41 HST",
      "status": "rejected",
      "title": "Better rock faces still floated above the hill",
      "detail": "The second custom mesh fixed the cone shape and texture scale. Unity joined both peaks into one object, leaving a shared flat bottom over the sloped ground.",
      "evidence": "3 views published · surface improved · grounding failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-29-authored-split-rock",
      "time": "01:37 HST",
      "status": "rejected",
      "title": "Custom rock mesh still looked computer-made",
      "detail": "The first custom mesh formed two tapered columns. Its flat undersides floated above the hill, and the rock texture stretched into large patches.",
      "evidence": "3 views published · 10,176 triangles · rejected before judging · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-28-split-rock-sightline",
      "time": "01:24 HST",
      "status": "accepted",
      "title": "Split Rock is clear in all three pictures",
      "detail": "We removed one tree that blocked the taller peak. Three fresh judges chose the corrected picture and confirmed every other sketch feature stayed visible.",
      "evidence": "1 tree removed · judges 3–0 · main + exact ±2° pictures published · realism not rescored",
      "date": "Jul 28"
    },
    {
      "id": "napkin-28-sightline-tuning",
      "time": "01:18 HST",
      "status": "rejected",
      "title": "Four broader tree-clear settings were rejected",
      "detail": "The first settings removed 29, 13, 7, and 8 trees. Two settings cleared too much forest; two left the blocking tree. We kept only the one-tree fix.",
      "evidence": "29 rejected · 13 rejected · 7 failed · 8 failed · final: 1",
      "date": "Jul 28"
    },
    {
      "id": "tree-restore-repro-proof",
      "time": "01:08 HST",
      "status": "accepted",
      "title": "Repeated captures now keep the same trees",
      "detail": "Two no-change runs now match. The hidden tree-state leak is fixed, so later picture comparisons can be trusted.",
      "evidence": "Hero: 0 pixels changed over threshold · left: 0.0027% · right: 0.00007%",
      "date": "Jul 28"
    },
    {
      "id": "realism-16-source-color-depth-pool",
      "time": "01:05 HST",
      "status": "rejected",
      "title": "Brighter depth water still looked like mud",
      "detail": "The Pool still stopped reading as water, so we rejected it. This run also revealed a cleanup-order bug that let temporary tree changes leak into later pictures; the fix is being verified now.",
      "evidence": "3 views published · water picture failed · tree cleanup repaired · no score change",
      "date": "Jul 28"
    },
    {
      "id": "realism-15-depth-aware-pool",
      "time": "01:02 HST",
      "status": "rejected",
      "title": "Deeper-looking water became too dark to see",
      "detail": "The depth effect worked, but the small Pool stopped looking like water. We rejected it before judging and kept the clear blue Pool.",
      "evidence": "3 views published · depth test passed · picture failed · no score change",
      "date": "Jul 28"
    },
    {
      "id": "realism-14-authored-ground-cover",
      "time": "00:56 HST",
      "status": "rejected",
      "title": "More shrubs hid too much of the sketch",
      "detail": "The ground looked fuller, but two of three fresh judges preferred the current picture because Split Rock and the other features were easier to see. The first gray capture was a graphics-off mistake; it was discarded before judging.",
      "evidence": "3 valid views published · judges 1–2 · empty ground 8.5% → 6.8% · no score change",
      "date": "Jul 28"
    },
    {
      "id": "realism-13-tree-age-classes",
      "time": "00:47 HST",
      "status": "rejected",
      "title": "Smaller trees made the valley feel emptier",
      "detail": "All three fresh judges preferred the current build. The new mix kept every sketch feature visible, but the forest looked smaller and sparser.",
      "evidence": "3 views published · judges 0–3 · empty ground 8.5% → 8.9% · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-27-fused-tor",
      "time": "00:33 HST",
      "status": "rejected",
      "title": "Deeper overlap still looked like stacked blocks",
      "detail": "The compact rocks joined more tightly, but the seams remained visible and one column stayed partly behind a tree. The accepted position remains live.",
      "evidence": "3 views published · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-26-compact-tor",
      "time": "00:30 HST",
      "status": "rejected",
      "title": "Compact boulders formed two obvious stacks",
      "detail": "Both columns were grounded and the split was visible, but the joints made the formation look assembled instead of natural.",
      "evidence": "3 views published · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-25-stacked-tor",
      "time": "00:28 HST",
      "status": "rejected",
      "title": "Wide rock pieces became floating shelves",
      "detail": "Two source rocks were much wider than tall. Stacking them created obvious horizontal slabs, so the result was rejected.",
      "evidence": "3 views published · no score change",
      "date": "Jul 28"
    },
    {
      "id": "napkin-24-authored-rock",
      "time": "00:25 HST",
      "status": "rejected",
      "title": "Two authored rocks merged into one giant wall",
      "detail": "The rock surfaces were better, but the pair lost its central split and dominated the left side of the picture.",
      "evidence": "3 views published · no score change",
      "date": "Jul 28"
    },
    {
      "id": "split-rock-external-model",
      "time": "00:21 HST",
      "status": "accepted",
      "title": "Final granite model needs upload approval",
      "detail": "The production reference is ready. No image was uploaded and no credits were spent because the outside 3D service was approved by Adam 2026-07-28, with a standing rule: under $100 total needs no approval.",
      "evidence": "0 uploads · $0 spent",
      "date": "Jul 28"
    },
    {
      "id": "napkin-23-split-right",
      "time": "00:14 HST",
      "status": "accepted",
      "title": "Split Rock moved into the sketch position",
      "detail": "We moved only the two peaks six meters right. A fresh judge confirmed the twin shape is clear and sits left of the Lookout in all three pictures.",
      "evidence": "3 views published · position accepted · realism not rescored",
      "date": "Jul 28"
    },
    {
      "id": "napkin-22-split-alignment",
      "time": "00:10 HST",
      "status": "rejected",
      "title": "Raising the rock base made a giant dark mound",
      "detail": "The peaks became clearer, but the higher ground swallowed the left side of the picture. We rejected it and restored the valley.",
      "evidence": "3 views published · ground restored · no score",
      "date": "Jul 28"
    },
    {
      "id": "napkin-21-split-position",
      "time": "00:06 HST",
      "status": "rejected",
      "title": "Moving Split Rock farther away hid the peaks",
      "detail": "The twin shape became too small and disappeared behind a tree. We rejected it and restored the earlier distance.",
      "evidence": "3 views published · size fell from about 185×415 to 122×270 pixels",
      "date": "Jul 28"
    },
    {
      "id": "gate-08-score",
      "time": "23:59 HST",
      "status": "rejected",
      "title": "Full realism score: 48.3/100",
      "detail": "All required sections passed, but every blind judge ranked both the main picture and weakest side picture last. Repeated plants, stretched rocks, flat materials, and artificial water remain obvious.",
      "evidence": "48.3/100 · goal is 80 · 31.7 points short",
      "date": "Jul 27"
    },
    {
      "id": "napkin-20-pool",
      "time": "23:53 HST",
      "status": "accepted",
      "title": "The Spring Pool is now easy to see",
      "detail": "We enlarged only the small pond and its bank. All three fresh judges then saw all five sketch features.",
      "evidence": "3 of 3 accepted the sketch match · 3 views published",
      "date": "Jul 27"
    },
    {
      "id": "gate-08-pool-reject",
      "time": "23:45 HST",
      "status": "rejected",
      "title": "The first review could not see the Spring Pool",
      "detail": "Two of three judges saw only a tiny water sliver. The other four sketch features passed, but the picture did not.",
      "evidence": "2 of 3 rejected · no realism claim",
      "date": "Jul 27"
    },
    {
      "id": "realism-12-reveal-horizon",
      "time": "23:35 HST",
      "status": "accepted",
      "title": "Real mountain peaks replace the fake wall",
      "detail": "We removed only the four far terrain tiles. The valley and all five sketch features stayed in place, while a detailed mountain range appeared behind them.",
      "evidence": "3 views published · no world edge · horizon check 39% → 62% · fresh realism review pending",
      "date": "Jul 27"
    },
    {
      "id": "realism-11-horizon-source",
      "time": "23:30 HST",
      "status": "accepted",
      "title": "We found the source of the fake mountains",
      "detail": "A four-picture test proved the smooth beige wall came from distant terrain. A better mountain range was already hidden behind it.",
      "evidence": "4 diagnostic pictures published · no scene change kept",
      "date": "Jul 27"
    },
    {
      "id": "realism-10-hide-mountains",
      "time": "23:25 HST",
      "status": "rejected",
      "title": "Removing one mountain layer exposed the same fake wall",
      "detail": "The named mountain ring disappeared, but another background layer underneath carried almost the same smooth wall and repeated grooves.",
      "evidence": "13.27% of pixels changed · visual problem stayed · NAPKIN-19 stays live",
      "date": "Jul 27"
    },
    {
      "id": "realism-09-mountain-rotation-result",
      "time": "23:21 HST",
      "status": "rejected",
      "title": "All eight mountain angles kept the same fake wall",
      "detail": "Every angle changed small ridge details but kept the same smooth beige wall and repeated grooves. Rotation cannot fix the source mountain.",
      "evidence": "8 of 8 published · no winner · NAPKIN-19 stays live",
      "date": "Jul 27"
    },
    {
      "id": "napkin-19-attempt-3",
      "time": "23:07 HST",
      "status": "accepted",
      "title": "Split Rock now matches the sketch height",
      "detail": "The twin peaks stay in the left third and now rise from the same part of the picture as the sketch. A narrower ridge keeps more of the lake visible.",
      "evidence": "Position accepted · 3 views captured · realism still 47/100",
      "date": "Jul 27"
    },
    {
      "id": "napkin-19-attempt-2",
      "time": "23:05 HST",
      "status": "rejected",
      "title": "Correct height, but the round hill looked fake",
      "detail": "The peaks reached the right place, but a wide circular mound swallowed too much lake and looked computer-made.",
      "evidence": "Position passed · round hill rejected",
      "date": "Jul 27"
    },
    {
      "id": "napkin-19-attempt-1",
      "time": "23:02 HST",
      "status": "rejected",
      "title": "The first raised bed looked like a cone",
      "detail": "Raising the grounded pair moved it toward the sketch, but the narrow base formed an obvious triangular mound.",
      "evidence": "3 views captured · cone-shaped bed rejected",
      "date": "Jul 27"
    },
    {
      "id": "realism-09-mountain-rotation",
      "time": "22:54 HST",
      "status": "wip",
      "title": "Mountain rotation test paused for the Split Rock fix",
      "detail": "The next mountain test is ready, but the direct composition correction took priority. No mountain result has been claimed.",
      "evidence": "Planned · not rendered",
      "date": "Jul 27"
    },
    {
      "id": "realism-08-outcrops-2",
      "time": "22:52 HST",
      "status": "incomplete",
      "title": "Rock outcrops targeted the wrong surface",
      "detail": "Only 5 of 55 rocks could be placed. The visible mountain is a separate background model, not terrain, so this attempt could not test the idea.",
      "evidence": "5 of 55 placed · no score · no visual claim",
      "date": "Jul 27"
    },
    {
      "id": "realism-08-outcrops-1",
      "time": "22:48 HST",
      "status": "incomplete",
      "title": "The first rock-outcrop pass placed nothing",
      "detail": "The search spent almost every try outside the useful mountain area. It produced no changed picture and no result.",
      "evidence": "0 of 55 placed · no score · no visual claim",
      "date": "Jul 27"
    },
    {
      "id": "realism-07-distant-cliff",
      "time": "22:41 HST",
      "status": "rejected",
      "title": "Rock texture made the mountain look blotchy",
      "detail": "Two of three blind judges preferred the existing mountain. They called the new patches synthetic, so the accepted tree-and-water build stays live.",
      "evidence": "1 of 3 preferred it · restored REALISM-06 · realism stays 47/100",
      "date": "Jul 27"
    },
    {
      "id": "realism-06-tree-diversity",
      "time": "22:33 HST",
      "status": "accepted",
      "title": "More tree shapes make the forest feel less repeated",
      "detail": "All three blind judges preferred the new tree mix, and all three composition judges still saw every sketch landmark. The mountain and ground plants remain the biggest problems.",
      "evidence": "3 of 3 preferred it · 5 of 5 landmarks held · realism stays 47/100",
      "date": "Jul 27"
    },
    {
      "id": "realism-05-water-normal",
      "time": "22:20 HST",
      "status": "accepted",
      "title": "Finer ripples make the lake look more natural",
      "detail": "All three blind judges preferred the new water. The side picture beat both demo renders, but the main picture still ranked last, so the full score stays 47/100.",
      "evidence": "3 of 3 preferred it · side view improved · realism stays 47/100",
      "date": "Jul 27"
    },
    {
      "id": "realism-04-atmosphere",
      "time": "22:02 HST",
      "status": "rejected",
      "title": "More haze did not make the mountains look real",
      "detail": "Two blind judges saw no difference; one preferred the original. Small computer scores also fell, so we restored the stronger scene.",
      "evidence": "0 of 3 judges preferred it · realism stays 47/100",
      "date": "Jul 27"
    },
    {
      "id": "realism-03-ground-cover",
      "time": "21:47 HST",
      "status": "rejected",
      "title": "Thinning the grass made the scene look barer",
      "detail": "All three blind judges preferred the original. The repeating plant pattern remained, so we restored the stronger scene.",
      "evidence": "0 of 3 judges preferred it · realism stays 47/100",
      "date": "Jul 27"
    },
    {
      "id": "realism-02-terrain",
      "time": "21:42 HST",
      "status": "rejected",
      "title": "Larger ground texture exposed a repeating grass pattern",
      "detail": "One computer check improved, but the picture looked worse. The lower foreground showed oversized repeated strokes, so we restored the old materials.",
      "evidence": "Roughness 0% → 53% · realism picture rejected",
      "date": "Jul 27"
    },
    {
      "id": "realism-01d-blind-reject",
      "time": "21:36 HST",
      "status": "rejected",
      "title": "Blind judges rejected the wider Split Rock",
      "detail": "All three still ranked the scene last, and visible computer-made problems rose from 9 to 11. We restored the stronger version while keeping the corrected position.",
      "evidence": "Rank 6/6 three times · tell count worsened",
      "date": "Jul 27"
    },
    {
      "id": "realism-01d-split",
      "time": "21:33 HST",
      "status": "accepted",
      "title": "Wider Split Rock passed our first look",
      "detail": "Both peaks stayed clear and in the correct place. This early pass was later overturned by the blind review shown above.",
      "evidence": "Temporary pass · later rejected · position stayed correct",
      "date": "Jul 27"
    },
    {
      "id": "realism-01c-split",
      "time": "21:29 HST",
      "status": "rejected",
      "title": "Taller second rock still did not look like a peak",
      "detail": "Its source shape stayed broad and low. The size passed, but the landmark still looked like one peak and one boulder.",
      "evidence": "2.85% size passed · twin shape failed",
      "date": "Jul 27"
    },
    {
      "id": "realism-01b-split",
      "time": "21:25 HST",
      "status": "rejected",
      "title": "Natural Split Rock lost its second peak",
      "detail": "The wider rocks looked less artificial, but one fell behind a tree. The sketch requires two clear peaks, so the old pair stays for now.",
      "evidence": "Size passed at 2.54% · picture rejected",
      "date": "Jul 27"
    },
    {
      "id": "realism-01a-lighting",
      "time": "21:16 HST",
      "status": "rejected",
      "title": "Nine lighting choices did not improve realism",
      "detail": "The current light remains best. Other choices made the scene too dark, too bright, or flatter, so none replaced it.",
      "evidence": "All 9 pictures published · no change accepted",
      "date": "Jul 27"
    },
    {
      "id": "eval-982-realism",
      "time": "21:11 HST",
      "status": "rejected",
      "title": "Realism scored 47/100",
      "detail": "The scene matches the sketch, but blind judges ranked the main picture behind both demo pictures and every quality example.",
      "evidence": "47/100; target 80; 33 points short",
      "date": "Jul 27"
    },
    {
      "id": "eval-982-tells",
      "time": "21:11 HST",
      "status": "wip",
      "title": "Judges named the next art problems",
      "detail": "The mountains look smooth, plants repeat, water looks flat, props look placed on top, and the yellow-green color makes the image feel synthetic.",
      "evidence": "Blind tell counts: 10 / 7 / 9; median 9",
      "date": "Jul 27"
    },
    {
      "id": "eval-982-composition-panel",
      "time": "21:11 HST",
      "status": "accepted",
      "title": "Sketch match passed, with one dissent",
      "detail": "Two of three judges saw all five landmarks in the right order. One judge missed the small Spring Pool, so that weakness stays visible in the record.",
      "evidence": "2 accepted · 1 rejected",
      "date": "Jul 27"
    },
    {
      "id": "camera-lookout-03-result",
      "time": "21:10 HST",
      "status": "accepted",
      "title": "All three pictures are now clear",
      "detail": "A single bush that filled the +2° picture was removed from the side-camera pad. The main picture did not change.",
      "evidence": "Hero, 2° left, and 2° right accepted for scoring",
      "date": "Jul 27"
    },
    {
      "id": "napkin-17-attempt-11",
      "time": "21:05 HST",
      "status": "accepted",
      "title": "All five sketch landmarks are visible",
      "detail": "Split Rock, Lookout, Rock Outcrop, Spring Pool, and Old Log now appear in the sketch order in the main picture.",
      "evidence": "Split 2.85%; Lookout 0.25%; Pool 2.24%; Log 4.21%; Outcrop 0.41%",
      "date": "Jul 27"
    },
    {
      "id": "napkin-16-attempt-10",
      "time": "20:59 HST",
      "status": "rejected",
      "title": "Compact Pool was still behind the ridge",
      "detail": "The Pool passed its size minimum but the complete picture still hid it behind the same foreground hill.",
      "evidence": "Pool 0.59% > 0.50%; rejected because it could not be seen",
      "date": "Jul 27"
    },
    {
      "id": "napkin-15-attempt-09b",
      "time": "20:53 HST",
      "status": "rejected",
      "title": "Large foreground Pool sat too low to see",
      "detail": "The Pool was large enough, but its wide basin reached down the steep bank and placed the water below the sightline.",
      "evidence": "Pool 1.51% > 0.50%; rejected because it could not be seen",
      "date": "Jul 27"
    },
    {
      "id": "napkin-15-attempt-09",
      "time": "20:50 HST",
      "status": "incomplete",
      "title": "Foreground Pool safety check stopped a shallow basin",
      "detail": "The basin center was above the proposed water. The run stopped before making a picture.",
      "evidence": "No picture produced; no visual result claimed",
      "date": "Jul 27"
    },
    {
      "id": "napkin-14-attempt-08",
      "time": "20:45 HST",
      "status": "rejected",
      "title": "Rock Outcrop succeeded; Pool stayed hidden",
      "detail": "The Outcrop became a clear granite overhang and was held. The Pool passed size but remained behind the foreground hill.",
      "evidence": "Outcrop 0.41% > 0.30%; Pool 0.61% > 0.50% but not visible",
      "date": "Jul 27"
    },
    {
      "id": "napkin-13-attempt-07",
      "time": "20:39 HST",
      "status": "rejected",
      "title": "Large Pool fell outside the right edge",
      "detail": "The Pool grew but most of it left the picture. The wider Outcrop still looked like a thin stick.",
      "evidence": "Pool 0.30% < 0.50%; Outcrop 0.16% < 0.30%",
      "date": "Jul 27"
    },
    {
      "id": "napkin-12-attempt-06b",
      "time": "20:32 HST",
      "status": "rejected",
      "title": "Pool and Rock Outcrop reached the right side but stayed too small",
      "detail": "The picture now has the correct left-to-right order. The Pool and Rock Outcrop still disappear at normal viewing size.",
      "evidence": "Pool 0.05% < 0.50%; Rock Outcrop 0.09% < 0.30%",
      "date": "Jul 27"
    },
    {
      "id": "napkin-12-attempt-06",
      "time": "20:29 HST",
      "status": "incomplete",
      "title": "Shallow Pool basin stopped before a picture was made",
      "detail": "The safety check found that the proposed water would sit below the basin center. The run stopped and the basin was deepened.",
      "evidence": "No picture produced; no visual result claimed",
      "date": "Jul 27"
    },
    {
      "id": "lookout-site-05",
      "time": "20:25 HST",
      "status": "accepted",
      "title": "Split Rock and Lookout now match the sketch",
      "detail": "Split Rock is a clear twin spire in the left third. The Firewatch tower is dry, grounded, centered, and visible.",
      "evidence": "Split Rock 2.85% > 0.25%; Lookout 0.24% > 0.10%",
      "date": "Jul 27"
    },
    {
      "id": "lookout-site-04",
      "time": "20:20 HST",
      "status": "rejected",
      "title": "Dry ridge hid the tower",
      "detail": "The tower moved out of the lake, but a ridge blocked it from the main picture. Split Rock stayed correct.",
      "evidence": "Lookout 0.07% < 0.10%; frame retained",
      "date": "Jul 27"
    },
    {
      "id": "napkin-11-split-result",
      "time": "20:10 HST",
      "status": "accepted",
      "title": "Split Rock now matches the sketch position",
      "detail": "Moving the unchanged twin spires to the left third makes both peaks readable in the main picture.",
      "evidence": "1.90% isolation silhouette; position accepted and held",
      "date": "Jul 27"
    },
    {
      "id": "napkin-11-lookout-water",
      "time": "20:10 HST",
      "status": "rejected",
      "title": "Grounded Lookout revealed the site is underwater",
      "detail": "The tower is visible and no longer floats over a rock, but its legs stand in the lake. This cannot pass.",
      "evidence": "Rejected immediately; nearby dry sites are being measured before another move",
      "date": "Jul 27"
    },
    {
      "id": "camera-lookout-02-result",
      "time": "20:06 HST",
      "status": "rejected",
      "title": "Closer Lookout fixed size but not visibility",
      "detail": "The tower, Split Rock, Spring Pool, and Old Log all became large enough. Trees still hide the tower, Split Rock sits too far left, and Rock Outcrop remains too small.",
      "evidence": "Lookout 0.229%; Split Rock 2.119%; Pool 0.884%; Log 3.867%; Outcrop 0.182%",
      "date": "Jul 27"
    },
    {
      "id": "napkin-10-attempt-01",
      "time": "20:02 HST",
      "status": "rejected",
      "title": "First Lookout-centered five-landmark picture missed the sketch",
      "detail": "The Lookout is centered but too small. Split Rock, Spring Pool, and Rock Outcrop are not where the sketch expects them. Old Log remains readable.",
      "evidence": "Lookout 0.067% < 0.10%; Spring Pool 0.150% < 0.50%; Rock Outcrop 0.193% < 0.30%",
      "date": "Jul 27"
    },
    {
      "id": "lookout-detail-01",
      "time": "20:02 HST",
      "status": "rejected",
      "title": "First Firewatch detail showed the tower but cropped its base",
      "detail": "The cab, roof, windows, and bracing are clear, but the low angle shows mostly sky and cuts off the tower base and setting.",
      "evidence": "Retained as a weak attempt; wider grounded detail framing is next",
      "date": "Jul 27"
    },
    {
      "id": "rock-outcrop-added",
      "time": "19:56 HST",
      "status": "wip",
      "title": "Rock Outcrop added as the fifth scored landmark",
      "detail": "The red-circled slanted granite overhang is now part of the finish line. It sits between the Lookout and Spring Pool in the sketch.",
      "evidence": "Must be visible in the main picture and cover at least 0.30% of the frame",
      "date": "Jul 27"
    },
    {
      "id": "camera-lookout-02",
      "time": "19:45 HST",
      "status": "wip",
      "title": "Camera contract changed to a Lookout focal point",
      "detail": "The existing hero camera position will aim at the Lookout, and both supporting views will orbit that same focal point by only two degrees left and right. The interrupted pre-change capture is not evidence.",
      "evidence": "User-authored override; new three-view capture pending",
      "date": "Jul 27"
    },
    {
      "id": "eval-981",
      "time": "19:40 HST",
      "status": "incomplete",
      "title": "Full grade 981 exposed evaluator scope mismatches",
      "detail": "The grade scored unclassifiable foreign-scene age classes as zero, used whole-terrain occupancy for a view-scoped metric, and measured the retired creek instead of Spring Pool. The immutable result remains in the record while subject and scope routing are corrected without changing weights or thresholds.",
      "evidence": "Incomplete measurement preserved; app typecheck and all 40 tests pass after the routing repair",
      "date": "Jul 27"
    },
    {
      "id": "pool-11-plan",
      "time": "19:42 HST",
      "status": "wip",
      "title": "Spring Pool attempt 11 adds only a subtle wet bank margin",
      "detail": "The pre-registered change is an irregular damp-soil transition immediately outside and below the accepted water surface. Camera, pool surface, all landmarks, scoring floors, and thresholds remain fixed.",
      "evidence": "Pending three-view capture and full-frame visual acceptance",
      "date": "Jul 26"
    },
    {
      "id": "lookout-04",
      "time": "19:32 HST",
      "status": "accepted",
      "title": "Lookout attempt 4 replaced the stock blockout",
      "detail": "Custom chamfered beams, a framed four-window cab, real rail members, and distinct wood, glass, and roof responses preserved the distant fire-tower silhouette without stock primitives.",
      "evidence": "0.104% isolation silhouette; composition-accepted, blind judgment pending",
      "date": "Jul 26"
    },
    {
      "id": "pool-10",
      "time": "19:27 HST",
      "status": "accepted",
      "title": "Spring Pool attempt 10 became a natural pond",
      "detail": "Replacing only the stock square surface with an irregular authored mesh and controlled HDRP water response produced a bounded reflective pond with grassy and rocky banks.",
      "evidence": "0.67% isolation silhouette; composition-accepted, blind judgment pending",
      "date": "Jul 26"
    },
    {
      "id": "pool-09",
      "time": "19:23 HST",
      "status": "rejected",
      "title": "Spring Pool attempt 9 exposed a raw square surface",
      "detail": "Moving the complete pool to the measured −9.426° / 60 m ray separated it from the background lake, but the stock prefab became an obvious bright square with a decorative rock line.",
      "evidence": "0.91% isolation silhouette; rejected by human-read and final-asset clauses",
      "date": "Jul 26"
    },
    {
      "id": "pool-08",
      "time": "19:18 HST",
      "status": "rejected",
      "title": "Spring Pool attempt 8 proved material was not the constraint",
      "detail": "The darker alpine-water profile rendered correctly, but the complete hero was visually unchanged. The front bank hides almost all of the surface, so shader tuning cannot make the pond readable.",
      "evidence": "1.17% isolation silhouette; rejected by the unchanged human-read clause",
      "date": "Jul 26"
    },
    {
      "id": "old-log-03",
      "time": "19:12 HST",
      "status": "accepted",
      "title": "Old Log attempt 3 crossed the foreground",
      "detail": "Changing only yaw from 54° to 144° preserved the owned asset, authored maps, 13 m scale, and terrain seating while aligning the trunk with the napkin composition. The complete hero keeps the other staged landmarks readable.",
      "evidence": "7.69% isolation silhouette; composition-accepted, blind judgment pending",
      "date": "Jul 26"
    },
    {
      "id": "old-log-02",
      "time": "19:11 HST",
      "status": "rejected",
      "title": "Old Log attempt 2 lay down but pointed into the scene",
      "detail": "Removing the roll fixed the model axis and ground contact. The trunk now reads as real deadwood, but its long axis recedes toward the scene instead of crossing the foreground.",
      "evidence": "6.55% isolation silhouette; rejected by napkin-relative composition",
      "date": "Jul 26"
    },
    {
      "id": "old-log-01",
      "time": "19:08 HST",
      "status": "rejected",
      "title": "Old Log attempt 1 imported correctly and stood vertically",
      "detail": "The owned production asset rendered with base-color, normal, and HDRP mask maps, but an incorrect 82° roll turned the 13 m trunk into a giant upright stump that overwhelmed the composition.",
      "evidence": "Rejected by the predeclared silhouette and composition clause",
      "date": "Jul 26"
    },
    {
      "id": "napkin-06a-current",
      "time": "18:50 HST",
      "status": "wip",
      "title": "Three landmarks staged; two visually strong",
      "detail": "Split Rock accepted. Lookout visible but crag integration still needs judgment. Spring Pool remains weak. Old Log remains blocked.",
      "evidence": "NAPKIN-06a latest three-view capture",
      "date": "Jul 26"
    },
    {
      "id": "lookout-03",
      "time": "Earlier today",
      "status": "accepted",
      "title": "Lookout attempt 3 cleared the tree band",
      "detail": "Moved the complete crag-and-tower assembly to the +28° far-shore return. The tower became independently nameable and cleared its unchanged silhouette floor.",
      "evidence": "0.113% isolation silhouette"
    },
    {
      "id": "lookout-02",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Lookout attempt 2 hit another foreground trunk",
      "detail": "The crag raised the tower as intended, but the hero still occluded it. The placement was rejected without changing the tower size or scoring floor.",
      "evidence": "Rejected by predeclared occlusion clause"
    },
    {
      "id": "lookout-01",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Lookout attempt 1 disappeared into the forest",
      "detail": "The tower seated correctly and had a clean isolation silhouette, but the complete hero hid it behind the far-shore tree band.",
      "evidence": "Rejected by complete-frame visual QA"
    },
    {
      "id": "split-03",
      "time": "Earlier today",
      "status": "accepted",
      "title": "Split Rock attempt 3 found a readable opening",
      "detail": "Moved the fixed twin-spire pose to −5°. Both peaks became independently visible left of center.",
      "evidence": "1.64% isolation silhouette"
    },
    {
      "id": "split-02",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Split Rock attempt 2 only partially cleared foliage",
      "detail": "The rocks became visible, but the twin peaks still overlapped the canopy and were not cleanly nameable.",
      "evidence": "Rejected by landmark-read test"
    },
    {
      "id": "split-01",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Split Rock attempt 1 was fully occluded",
      "detail": "The approved pose worked in isolation but disappeared behind the dominant foreground tree in the hero.",
      "evidence": "Rejected for occlusion"
    },
    {
      "id": "pool-07",
      "time": "Earlier today",
      "status": "wip",
      "title": "Spring Pool attempt 7 exposed the surface",
      "detail": "Raised the finite water surface inside the stone boundary. The feature clears its area floor, but the grazing reflection remains pale and weak.",
      "evidence": "1.18% isolation silhouette"
    },
    {
      "id": "pool-06",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Spring Pool attempt 6 read as a rock circle",
      "detail": "The stone rim became visible, but the water did not. The attempt failed its own requirement to read as a pond.",
      "evidence": "Rejected by predeclared water-read clause"
    },
    {
      "id": "pool-05",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Spring Pool attempt 5 read as dark ground",
      "detail": "Moving the pond to 60 m solved the camera occlusion, but the authored water material still did not read as water at the grazing angle.",
      "evidence": "Rejected as water-only treatment"
    },
    {
      "id": "pool-03-04",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Spring Pool attempts 3–4 proved the original distance band unusable",
      "detail": "At one bearing the pool was cropped by the frame; at another it was depth-occluded by the foreground berm.",
      "evidence": "Placement envelope corrected before the next attempt"
    },
    {
      "id": "pool-01-02",
      "time": "Earlier today",
      "status": "rejected",
      "title": "Spring Pool attempts 1–2 were hidden",
      "detail": "Grass hid the first placement. Clearing the pond-only detail patch exposed a foreground berm as the remaining occluder.",
      "evidence": "Rejected for failed human readability"
    },
    {
      "id": "terrain-pass",
      "time": "17:55 HST",
      "status": "rejected",
      "title": "Terrain sculpting succeeded mechanically and failed visually",
      "detail": "A 9 m plinth and 2.2 m basin changed less than the renderer’s noise floor. The work was reverted and the plan moved to object placement.",
      "evidence": "4.21% whole-frame change vs. 8.5% noise floor",
      "date": "Jul 26"
    },
    {
      "id": "splitrock-frame-04",
      "time": "16:40 HST",
      "status": "rejected",
      "title": "Split Rock's unexplained frame is now fully explained — and the card still fails, for a nameable reason",
      "detail": "Three suspects cleared by measurement, not argument. The terrain was never resculpted (all 60 heightmap rects byte-identical). The vegetation was never cleared (triangles moved +0.03%). The talus never came forward (2.3 m apron in both runs). What actually happened: the meadow is still green and still there — it is in the shade of a 5.5 m rock now standing 17 m from the lens. Seventy per cent of the pixels changed, but almost all of that change is faint; the hard core of it is 3.19% of frame, which is the rock's own attested silhouette to two decimals. Also caught: the earlier comparison was made across a fork, not a chain — the runs it compared do not even contain the same landmarks. The card still fails, but now on something specific and fixable: up close the rock reads as a soft brown lump with no detail and no visible split, because its texture is stretched about 7.5x further than it was designed for.",
      "evidence": "delta>=96 is 3.19% of frame vs attested silhouette 3.1367%; 60/60 sculpt rects identical; triangles 77.94M -> 77.97M; napkin43 vs napkin44 differ by 0.00%",
      "date": "Jul 30",
      "image": "/demo-base/roast/splitrock-frame-explained.png"
    },
    {
      "id": "outcrop-form-pool-blocked",
      "time": "13:40 HST",
      "status": "rejected",
      "title": "Rock Outcrop is now the right size in the right place and you still cannot see it. Spring Pool refuses to be built at all.",
      "detail": "Six engine runs. The outcrop is now built at exactly the fifteen feet Adam drew, it sits within a hair of where he drew it, and the visibility instrument says it is unmistakably present. Then you zoom in on the spot it says it is, and there is no rock there — a dark, soft hillside and a patch of green. Fifty-seven per cent of it is hidden and the rest is the same colour as the ground it stands on. That is a fail, and it is the second landmark in a row to fail exactly this way after being moved close to the camera. Two is a pattern. Along the way the engine gave up a real bug: the outcrop's width setting was never a size control at all, because two hidden minimums pinned its height and depth at fixed values for every scene this project has ever rendered. Widening it stretched it on one axis. That is fixed and the fix is proven — the corrected run matched its written prediction to within seven per cent, and every other landmark in the frame moved by exactly zero. The pool is worse news: it will not build. Three attempts, three refusals from the engine's own safety check, because the pool is not really the pool — its bowl is carved into the terrain by three separate sculpting operations, and shrinking the pool without shrinking the bowl leaves water sitting below the ground it is supposed to fill. Scaling the bowl too did not fix it. I ruled out the obvious cause on measurement and I am not going to guess at the rest. Handing it over half-solved and saying so.",
      "evidence": "EXPERIMENTS.md OUTCROP-SIZE-01/01b, OUTCROP-DEPTH-02, OUTCROP-X-03, POOL-SIZE-03/03b; Artifacts/napkin45b, napkin46, napkin46b"
    },
    {
      "id": "outcrop-floors-latent-defect",
      "time": "14:05 HST",
      "status": "finding",
      "title": "A size control that was never a size control — every rock outcrop this project has ever rendered was the same height and depth no matter what the config said",
      "detail": "Worth more than the card it came from. The outcrop had a width setting, and two hidden minimums sitting behind it that only release above about ninety-two feet of width. This scene has never run wider than fifty-two. So those minimums have been in force in every single frame this project has ever captured: the rock's height was locked at five metres and its depth at ten metres, forever, while the width dial did whatever it was told. Turning that dial did not resize the rock — it stretched it on one axis. Every outcrop in the campaign's history was the same slab wearing a different width. Nobody could have seen this from the outside; the setting is named for width, and a settings comparison shows only the number you changed. What surfaced it was a prediction failing. Before the run I wrote down the exact silhouette the corrected size should produce. The run came back at more than double it, and a number that misses a written prediction is a question you have to answer, where the same number with no prediction beside it is just a number. That is the whole argument for writing the prediction down first, in one line. The fix is in and proven: the corrected run landed within seven per cent of its prediction and every other landmark in the frame moved by exactly zero. Same class of latent defect as the one found in the seating code — geometry that lives outside the control that appears to own it.",
      "evidence": "LandmarkPlacementKit.BuildRockOutcrop; EXPERIMENTS.md OUTCROP-SIZE-01 (void) and OUTCROP-SIZE-01b"
    },
    {
      "id": "nearfield-detail-01",
      "time": "14:35 HST",
      "status": "finding",
      "title": "The two invisible rocks are invisible for opposite reasons, and neither one is short of detail in the asset",
      "detail": "I was asked to chase one lever that could unblock two cards at once: both rocks are the right size in the right place and neither reads at zoom, both after being moved close to the camera. Before spending an engine run I measured the two frames I already had, and the measurement says the two cards do not share a problem. Split Rock really is detail-starved — it carries less fine surface structure than plain shadowed ground sitting right beside it at the same brightness, which is the comparison that makes it a finding rather than a complaint about darkness. The outcrop is the reverse: it carries as much fine structure as the hiker's jacket, a card that passes. It is not missing detail, it is just dark and the same colour as the hill it stands on, so it never separates from its background. One lever would have moved one of them and left the other exactly where it is, and the run would have looked like half a win instead of a mis-aimed test. Then the second measurement: the rock's own texture is the most detailed texture in the whole set — more fine structure than the tree stump's, at twice the resolution, and the stump passes on looks. So the detail exists in the asset and is being lost somewhere between the asset and the screen, and pouring in more detail cannot fix a leak. The arithmetic behind the original theory was also backwards. The rock did not only come closer, it also got eleven times smaller at the same time, which makes its texture finer, not coarser. Net, it is slightly better off than before the move. Three real suspects are written down and none has been tested, and I have put the one that could undermine my own measurement at the top of the list rather than the bottom. No card moved. Still three of nine.",
      "evidence": "EXPERIMENTS.md NEARFIELD-DETAIL-01; Artifacts/napkin46b-outcrop-x/forge-valley.png"
    }
  ],
  "rules": [
    "Composition is judged in the hero frame; realism is judged at the weakest of three views.",
    "Do not change the camera, score scale, or landmark thresholds to rescue a result.",
    "Every experiment states one variable and a revert clause before it runs.",
    "Publish accepted, weak, regressed, rejected, and incomplete results—not only successes.",
    "A first score at or above 80 is provisional until a second independent panel confirms it.",
    "External service spend under $100 total per effort is pre-approved (Adam, 2026-07-28) — record it, never park work waiting for it."
  ],
  "ladders": {
    "compliance": {
      "label": "Landmark cards (sketch match + roast)",
      "done": 2,
      "total": 9,
      "detail": "hiker, lookout passing · trail improved/unclaimed · stump blocked (hunt stopped at 6 assets) · split rock, outcrop, sapling, old log, pool untouched · CALENDAR WARNING: the score ladder now looks like the hard half and may need most of the remaining six days; not all nine cards are likely to land. · Jul 30: no card advanced. The day went to instrument work and bug fixes, which is where the value was, but the compliance ladder did not move. · DEVIATIONS FROM ADAM'S ORDER, stated plainly: (1) trail worked before its slot, (2) stump parked unfinished at card 4 with a written prescription. Both deliberate, both recorded. · MILESTONE: card five now fails on a MEASURED 0.0287, not an opinion. With the sketch boxes committed for all nine landmarks and built width now exported by the kit, every remaining card — Rock Outcrop, Sapling, Old Log, Spring Pool — is rulable by number the moment it is built."
    },
    "score": {
      "label": "Realism readings (two at 80+ required)",
      "done": 0,
      "total": 2,
      "current": 57,
      "detail": "HARD CAP 60 DISCOVERED — see the ceiling block. Best measured state 57 was already within 3 points of a ceiling imposed by one floating rock, so no amount of lighting or texture work could move it. LIGHT-01 (sky fill) read 51.0 vs 57.0 and its premise split the judges 2-1; reverted as physically arbitrary. SPIRE-CONTACT-01 now the whole campaign's critical path: the talus pile was seated from ONE ground sample at its centre, so a 14 m pile on a slope buries its uphill half and hangs its downhill half in the air — the same bug class as the tower legs. Fixed with 25-sample footprint seating to the LOWEST ground plus relief-aware bedding.",
      "noiseFloor": "±9 spread (3 blind reads of one unchanged frame: 58/61/52, sigma 3.7)",
      "calibration": "real photographs 100 · photoreal render of OUR composition 73 · our engine best 57 · our batched attempt 49",
      "sketchCost": "~3 points of 27 lost on the photoreal tier trace to the mandated composition (fin-slab form, pond contact geometry, log tangency). ~24 are execution. Sketch fidelity is cheap to keep and 80 remains reachable with Adam's design."
    }
  },
  "calibration": {
    "title": "Calibration ladder — one judge, all reads blind",
    "rows": [
      {
        "subject": "Real photographs (this project's own target set)",
        "score": "100, 100",
        "note": "zero of our three headline defects named; judge praised erosion-true landforms and correct zonation"
      },
      {
        "subject": "Photoreal render of OUR composition",
        "score": "73",
        "note": "below the 80 contract — but only ~3 of its 27 lost points trace to Adam's composition; ~24 are execution"
      },
      {
        "subject": "Our engine build, best measured state",
        "score": "57",
        "note": "three reads 58/61/52, spread 9"
      },
      {
        "subject": "Our engine build, BATCH-01 attempt",
        "score": "49",
        "note": "56/44/48 — reverted in full"
      }
    ],
    "readIt": "The scale's top is anchored by reality. 80 is most of the distance from a competent real-time blockout to a photograph — but the sketch is not what stands in the way."
  },
  "ceiling": {
    "title": "*** THE CEILING — we cannot score above 60 while one rock floats ***",
    "finding": "All three of the latest blind reads carry the same line: 'Applicable cap: 60 max (floating assets and obvious repetition dominate inspection)'. All three name the same object as defect #1 — a levitating scree cluster on the main spire with no supporting ledge, no contact shadow, and sky visible underneath.",
    "consequence": "The contract needs 80. Every point of lighting, texture, erosion, ecology and atmosphere work in this campaign has been done underneath a hard ceiling 20 points below the target. This is the most probable single explanation for why the last four score experiments all came back flat or down: improvements under a cap have nowhere to go.",
    "vindication": "Adam wrote 'nothing floats, everything touches' into the contract on day one. The judge does not treat it as a deduction — it enforces it as a hard ceiling. The compliance ladder and the score ladder were never separate: the founding rule IS the score gate.",
    "action": "SPIRE-CONTACT-01 is the critical path, not a queued item. The signal to watch is not the score — it is the cap line disappearing.",
    "status": "CAP MOVED, NOT LIFTED. Three reads: one applies 50 (materials now binding, floating cap 'superseded'), two still hold 60. They disagree on which cap binds — which is itself information: we are near the contact threshold. Reads name a floating SPIRE BASE (the landmark itself, not its talus — 'a mesh hanging in space' over open water) and a box primitive. BOTH now fixed.",
    "doNotMisread": "The mean fell to 50.0 from 57.0 while the targeted defect disappeared. Under a hard cap the number CANNOT reward a fix. Do not read '50 vs 57' as a failed experiment — the fix is proven by the defect's absence from the reads, not by the score.",
    "boxIdentified": "The 'raw box / untextured cube, no roof, no door' that two judges flagged is at frame x 0.43-0.53, y 0.63-0.74. The Lookout sits at x 0.57 y 0.36 — nowhere near it. The STUMP sits at x 0.48 y 0.75, inside it. The box is OUR PROCEDURAL STUMP, the 24-gon cylinder built as an interim de-box. THE LOOKOUT CARD IS NOT IMPLICATED and does not need re-examining — disproved by measurement, not assertion. The primitive has been retired for the scanned mesh: its pale albedo is a quality problem, but quality beats category when the standard forbids primitives.",
    "shadowFinding": "RESOLVED AND DEAD. The probe measured HDRP's real shadow range at 5000 m — already forty times the scene depth, explicitly overridden, rendering shadows across the whole valley all along. QualitySettings.shadowDistance = 15 m was a real, accurate reading of a setting HDRP does not use. Both of today's shadow changes are dropped per the disposition rule written before the result: the HDRP override reverted (600 m would have REDUCED it from 5000 and been called a fix), and the QualitySettings change dropped as a no-op. The contradiction stands open: objects telemetry proves are bedded are still called floating, and shadow range is not why. Untested candidates: per-renderer shadow-casting mode on staged prefabs, shadow resolution too faint to read at 1600x900, or judges describing missing contact/ambient darkening rather than cast shadows.",
    "historyReexamined": "AMENDED AND WITHDRAWN. This note previously proposed a second systemic explanation — that every reading was taken on a frame with no cast shadows beyond 15 m. The HDRP probe disproved it: the real shadow range was already 5000 m and shadows have rendered across the whole valley throughout. The floating-asset cap stands as the ONE systemic explanation that has survived measurement.",
    "openContradiction": "KNOWN UNKNOWN, narrowed to two candidates. Objects proven bedded by telemetry are still called floating, and EVERY lighting-and-shadow explanation is now eliminated by measurement: fog, indirect light, tree billboarding, both shadow levers, and ambient occlusion (0.75, healthy). Survivors, untested: per-renderer shadow-casting mode on staged prefabs; shadow resolution too faint at 1600x900."
  },
  "renderSettings": {
    "title": "Render settings — corrected framing (supersedes the earlier 'the scene was bare' claim)",
    "whatIsTrue": "The CAPTURE KIT has never staged render settings. That is true and is now fixed by audit rather than by hunting.",
    "whatWasWrong": "'The scene was bare' was never true, and it was repeated to Adam. The volume profile carries 11 overrides: Bloom, CloudLayer, ColorCurves, Exposure, Fog, HDShadowSettings, IndirectLightingController, LiftGammaGain, PhysicallyBasedSky, ScreenSpaceAmbientOcclusion, VolumetricClouds. That is a well-populated profile and a materially better starting position than implied.",
    "gapsRecordedNotActioned": "ScreenSpaceReflection (absent — wet rock, pool surface). ScreenSpaceGlobalIllumination (absent — and the likely MECHANICAL reason LIGHT-01 measured nothing: IndirectLightingController only scales a GI signal, it cannot create one). Tonemapping (not in the list; one probe, correct type name). MotionBlur/DoF/Vignette/Grain deliberately left absent.",
    "openQuestion": "CLOSED. AO measured at 0.75, present and explicitly overridden — healthy, and not the cause. Six render settings checked, six measured, none was the cause. Thread closed; next action is building."
  },
  "instrumentsThatRefuse": {
    "title": "Tools that refuse to lie on our behalf — the campaign's real output",
    "items": [
      "SEAT_GROUND telemetry — a floating object now appears in the build log, not only in a picture.",
      "Before-value logging — killed four theories in two days, including two of my own that would have shipped regressions as fixes.",
      "The fog guard — refused to claim an atmosphere change it had not made, and caught an instrumentation edit that had silently disabled a real one.",
      "The Slack sender — refused to claim a delivery it could not verify by read-back.",
      "The one-pass volume-profile audit — disproved my own 'the scene has no ambient occlusion' claim in its first line."
    ],
    "theme": "Three days of work produced a habit: instruments that fail closed. Every one of them stopped a false claim reaching this board."
  }
}