Files
Eric WagonerandClaude Fable 5 7d7d3bb8da The acknowledged overhang: "doesn't fit, shelved anyway" goes legit
Eric's office towers are 9.5 inches deep; Etherfields boxes are 11.8
inches square. Spine-out they stand 2.3 inches proud of the shelf edge
— clearly livable, it's how they sit today — but the lane model will
honestly refuse forever: can't stand (11.8 > 9.5 depth), can't stack
flat (same), so the opening warns NO PACKING FITS. The first deliberate
misfit deserves first-class status.

An assignment can now carry acknowledged: true. An acknowledged box
takes the standing lane WITHOUT the height/depth check — the human has
seen the overhang — while the width budget stays honest (nine
acknowledged monoliths still overflow a 23.25-inch row). It drops out
of misfit/laneless warnings everywhere: the wall diagram, the sheet,
and bggpipe dims (which now says "overhangs, acknowledged" instead).

Ways in: an "accept overhang" button in the opening's sheet (appears
on any resident the lanes can't take; tap again to retract), or an
acknowledge column (yes) in shelve --import. Once acknowledged, later
imports needn't re-state it.

Re-import hardening, prompted by Eric's "will a new import make a
mess?": it's an upsert, not a reset — and now genuinely so. Previously
a re-import preserved notes but silently wiped lane overrides; now
notes, lanes, and acknowledgments all survive when the opening is
unchanged (a move resets lane and acknowledgment — new spot, new
verdict). Same fix in /api/locate: the lane-flip button used to wipe
the hand-entered note because LocateBody.note defaulted to "" —
it's now tri-state, None means leave it alone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
2026-08-09 15:45:36 -04:00

250 lines
6.0 KiB
JSON

{
"units": [
{
"name": "Library Kallax",
"openings": [
{
"id": "library-kallax-top",
"label": "Top",
"zone": "",
"width_in": 53.0,
"height_in": 38.0,
"depth_in": 15.4
},
{
"id": "library-kallax-a1",
"label": "A1",
"zone": "oversize",
"width_in": 26.5,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-a2",
"label": "A2",
"zone": "oversize",
"width_in": 26.5,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-b1",
"label": "B1",
"zone": "party",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4,
"description": "big boxes a-m"
},
{
"id": "library-kallax-b2",
"label": "B2",
"zone": "party",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4,
"description": "big boxes n-z"
},
{
"id": "library-kallax-b3",
"label": "B3",
"zone": "party",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4,
"description": "card rows standing"
},
{
"id": "library-kallax-b4",
"label": "B4",
"zone": "two-player",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-c1",
"label": "C1",
"zone": "general",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-c2",
"label": "C2",
"zone": "general",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-c3",
"label": "C3",
"zone": "general",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-c4",
"label": "C4",
"zone": "general",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-d1",
"label": "D1",
"zone": "general",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-d2",
"label": "D2",
"zone": "vintage wargames",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-d3",
"label": "D3",
"zone": "heavy",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
},
{
"id": "library-kallax-d4",
"label": "D4",
"zone": "campaign",
"width_in": 13.25,
"height_in": 13.25,
"depth_in": 15.4
}
],
"description": "Centerpiece of the game wall in the library"
},
{
"name": "Library Right Shelving",
"description": "To the right of the Kallax",
"openings": [
{
"id": "library-right-shelving-top",
"label": "Top",
"zone": "",
"width_in": 23.5,
"height_in": 25.0,
"depth_in": 9.5
},
{
"id": "library-right-shelving-a1",
"label": "A1",
"zone": "",
"width_in": 23.25,
"height_in": 10.25,
"depth_in": 9.5
},
{
"id": "library-right-shelving-b1",
"label": "B1",
"zone": "",
"width_in": 23.25,
"height_in": 10.75,
"depth_in": 9.5,
"description": ""
},
{
"id": "library-right-shelving-c1",
"label": "C1",
"zone": "",
"width_in": 23.25,
"height_in": 12.25,
"depth_in": 9.5,
"description": ""
},
{
"id": "library-right-shelving-d1",
"label": "D1",
"zone": "",
"width_in": 23.25,
"height_in": 13.25,
"depth_in": 9.5,
"description": ""
},
{
"id": "library-right-shelving-e1",
"label": "E1",
"zone": "",
"width_in": 23.25,
"height_in": 19.0,
"depth_in": 9.5,
"description": ""
}
]
},
{
"name": "Library Left Shelving",
"description": "To the left of the Kallax",
"openings": [
{
"label": "Top",
"zone": "",
"width_in": 23.5,
"height_in": 25.0,
"depth_in": 9.5,
"id": "library-right-shelving-2-top"
},
{
"label": "A1",
"zone": "",
"width_in": 23.25,
"height_in": 10.25,
"depth_in": 9.5,
"id": "library-right-shelving-2-a1"
},
{
"label": "B1",
"zone": "",
"width_in": 23.25,
"height_in": 10.75,
"depth_in": 9.5,
"description": "",
"id": "library-right-shelving-2-b1"
},
{
"label": "C1",
"zone": "",
"width_in": 23.25,
"height_in": 12.25,
"depth_in": 9.5,
"description": "",
"id": "library-right-shelving-2-c1"
},
{
"label": "D1",
"zone": "",
"width_in": 23.25,
"height_in": 13.25,
"depth_in": 9.5,
"description": "",
"id": "library-right-shelving-2-d1"
},
{
"label": "E1",
"zone": "",
"width_in": 23.25,
"height_in": 19.0,
"depth_in": 9.5,
"description": "",
"id": "library-right-shelving-2-e1"
}
]
}
]
}