skilldrop-cli 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +3 -1
  2. package/catalogue.json +16 -1
  3. package/model-routing.json +12 -0
  4. package/package.json +1 -1
  5. package/packs/event-planner/skills/run-of-show/SKILL.md +6 -3
  6. package/packs/event-planner/skills/run-of-show/manifest.json +1 -1
  7. package/packs/event-planner/skills/seating-plan/SKILL.md +6 -3
  8. package/packs/event-planner/skills/seating-plan/evals/evals.json +30 -0
  9. package/packs/event-planner/skills/seating-plan/evals/files/10/hall_notes.txt +13 -0
  10. package/packs/event-planner/skills/seating-plan/evals/files/10/quiz_night_registrations.csv +67 -0
  11. package/packs/event-planner/skills/seating-plan/evals/files/11/notes_for_the_plan.txt +21 -0
  12. package/packs/event-planner/skills/seating-plan/evals/files/11/rsvp_list.csv +77 -0
  13. package/packs/event-planner/skills/seating-plan/evals/files/11/table_plan_draft.csv +78 -0
  14. package/packs/event-planner/skills/seating-plan/manifest.json +1 -1
  15. package/packs/interior-designer/pack.json +60 -0
  16. package/packs/interior-designer/skills/furniture-layout/SKILL.md +182 -0
  17. package/packs/interior-designer/skills/furniture-layout/evals/eval_queries.json +11 -0
  18. package/packs/interior-designer/skills/furniture-layout/evals/evals.json +133 -0
  19. package/packs/interior-designer/skills/furniture-layout/evals/files/2/living-room-notes.md +24 -0
  20. package/packs/interior-designer/skills/furniture-layout/evals/files/3/office-brief.md +18 -0
  21. package/packs/interior-designer/skills/furniture-layout/evals/files/4/furniture_schedule.csv +15 -0
  22. package/packs/interior-designer/skills/furniture-layout/evals/files/4/site_survey.txt +22 -0
  23. package/packs/interior-designer/skills/furniture-layout/evals/files/5/layout_v2.csv +14 -0
  24. package/packs/interior-designer/skills/furniture-layout/evals/files/5/measurements.txt +16 -0
  25. package/packs/interior-designer/skills/furniture-layout/evals/files/6/access_consultant_email.txt +19 -0
  26. package/packs/interior-designer/skills/furniture-layout/evals/files/6/furniture_stock.csv +5 -0
  27. package/packs/interior-designer/skills/furniture-layout/evals/files/6/site_measurements.txt +14 -0
  28. package/packs/interior-designer/skills/furniture-layout/evals/files/7/room_214_layout.csv +11 -0
  29. package/packs/interior-designer/skills/furniture-layout/evals/files/7/room_and_brand_standard.txt +20 -0
  30. package/packs/interior-designer/skills/furniture-layout/evals/files/8/email_from_practice_manager.txt +44 -0
  31. package/packs/interior-designer/skills/furniture-layout/evals/files/8/furniture_we_are_keeping.csv +10 -0
  32. package/packs/interior-designer/skills/furniture-layout/evals/files/9/reading_room_schedule.csv +15 -0
  33. package/packs/interior-designer/skills/furniture-layout/evals/files/9/room_notes.txt +23 -0
  34. package/packs/interior-designer/skills/furniture-layout/examples/king-bed-bedroom.md +121 -0
  35. package/packs/interior-designer/skills/furniture-layout/examples/king-bed-bedroom.svg +57 -0
  36. package/packs/interior-designer/skills/furniture-layout/manifest.json +44 -0
  37. package/packs/interior-designer/skills/furniture-layout/scripts/layout_check.py +1130 -0
  38. package/packs/interior-designer/skills/furniture-layout/templates/layout.json +26 -0
  39. package/packs/operations-manager/skills/shift-roster/SKILL.md +6 -3
  40. package/packs/operations-manager/skills/shift-roster/manifest.json +1 -1
  41. package/packs/startup-legal/pack.json +58 -0
  42. package/packs/startup-legal/skills/cap-table/SKILL.md +131 -0
  43. package/packs/startup-legal/skills/cap-table/evals/eval_queries.json +30 -0
  44. package/packs/startup-legal/skills/cap-table/evals/evals.json +46 -0
  45. package/packs/startup-legal/skills/cap-table/examples/seed-to-series-a.md +81 -0
  46. package/packs/startup-legal/skills/cap-table/manifest.json +34 -0
  47. package/packs/startup-legal/skills/cap-table/scripts/cap_table.py +344 -0
  48. package/packs/startup-legal/skills/cap-table/templates/cap.json +23 -0
  49. package/packs/startup-legal/skills/contract-check/SKILL.md +118 -0
  50. package/packs/startup-legal/skills/contract-check/evals/eval_queries.json +30 -0
  51. package/packs/startup-legal/skills/contract-check/evals/evals.json +46 -0
  52. package/packs/startup-legal/skills/contract-check/evals/files/1/saas-agreement.md +68 -0
  53. package/packs/startup-legal/skills/contract-check/evals/files/2/consulting-agreement.md +64 -0
  54. package/packs/startup-legal/skills/contract-check/evals/files/3/reseller-agreement.md +69 -0
  55. package/packs/startup-legal/skills/contract-check/examples/inputs/saas-agreement.md +68 -0
  56. package/packs/startup-legal/skills/contract-check/examples/saas-agreement.md +72 -0
  57. package/packs/startup-legal/skills/contract-check/manifest.json +34 -0
  58. package/packs/startup-legal/skills/contract-check/reference.md +109 -0
  59. package/packs/startup-legal/skills/contract-check/scripts/contract_check.py +413 -0
@@ -0,0 +1,23 @@
1
+ Reading room - Ashby Moor Library - notes for the furniture re-plan
2
+ (Rosalind Achebe, branch librarian, Nov 2026)
3
+
4
+ Room: 10.0 m west to east, 7.2 m south to north, rectangular, no columns.
5
+ X and Y in the schedule are to the south-west corner of each piece, from the west
6
+ wall and the south wall. Sizes are as the piece sits in the room.
7
+
8
+ Main door: south wall, opening from 4000 to 4900 mm from the west wall. Opens into the
9
+ room, hinged at the west side.
10
+ Fire exit: east wall, opening from 5800 to 6700 mm from the south wall. Opens outward.
11
+ Window bay: west wall between S1 and S2 (2000 to 3300 mm from the south wall).
12
+
13
+ S1 and S2 are bolted to the floor and wall and are staying. T5 stays where it is - the
14
+ only floor box with power and data for it is under it.
15
+
16
+ Our standards (from the county's library design guide):
17
+ - main routes (main door to the fire exit, and main door to T5) at least 1200 clear
18
+ - at least 1000 between shelving ranges
19
+ - 900 clear behind the chairs on the long sides of a reading table, to pull the chair
20
+ out (measure from the table edge)
21
+ - nothing in the swing of the main door
22
+ - a 1500 x 1500 turning space for the wheelchair user at T5, in front of T5 in the
23
+ window bay, so they aren't sitting out in the walkway
@@ -0,0 +1,121 @@
1
+ # Worked example: a king bed that "fits" by area
2
+
3
+ Input → output oracle for `furniture-layout`. The room passes an area check easily: 11.9 m²
4
+ of floor for 5.2 m² of furniture. It fails twice on geometry before it passes. The first draft
5
+ puts the desk in the door's swing. The second leaves a 0.81 m diagonal between the desk and
6
+ the bed, under the 0.9 m walkway, so the wardrobe can't be reached. The answer keeps the king
7
+ bed and changes the one piece that can give: the desk.
8
+
9
+ ## Input
10
+
11
+ > Lay out our bedroom: 3.6 m wide × 3.3 m deep, door at the right end of the south wall
12
+ > opening in, window centred on the north wall with a 0.9 m sill. Furniture: a king bed
13
+ > (1.8 × 2.0 m), two nightstands, a 1.2 m wardrobe with hinged doors, and a small desk with
14
+ > a chair.
15
+
16
+ ## The zoning
17
+
18
+ - The bed's head goes on the north wall, under the window: it is the only wall long enough to
19
+ give the bed 0.6 m on both sides.
20
+ - The wardrobe takes the west wall beside the bed, so its doors open into the bed's own side
21
+ clearance, not into the route.
22
+ - The desk takes the south-west corner, away from the door's swing.
23
+ - The route runs from the door along the foot of the bed to both bed sides and the wardrobe.
24
+
25
+ ## What the checker caught
26
+
27
+ **Draft 1** had the bed centred, the wardrobe on the west wall by the door, and the desk on the
28
+ east wall by the door:
29
+
30
+ ```
31
+ FAIL Desk is in the swing of Door: the door can't open fully
32
+ FAIL nothing 0.90 m wide clears the way in at Door
33
+ ```
34
+
35
+ **Draft 2** moved the bed 0.3 m east and the desk into the south-west corner, still at the
36
+ standard small-desk size of 1.0 × 0.5 m:
37
+
38
+ ```
39
+ FAIL no clear 0.90 m route from the entrance reaches Wardrobe (its front side)
40
+ ```
41
+
42
+ The desk's corner at (1.0, 0.5) and the bed's foot corner at (1.2, 1.3) leave a diagonal of
43
+ 0.81 m. That's enough to squeeze past, but not the 0.9 m walkway. A 0.9 × 0.45 m desk
44
+ opens the gap to 0.94 m.
45
+
46
+ ## The layout that passes
47
+
48
+ `layout.json` (excerpt):
49
+
50
+ ```json
51
+ {
52
+ "title": "Bedroom, 3.6 × 3.3 m: king bed, wardrobe and desk",
53
+ "units": "m", "size": [3.6, 3.3],
54
+ "doors": [{"name": "Door", "at": [3.1, 0], "width": 0.8, "hinge": "left", "swing": "in", "entrance": true}],
55
+ "windows": [{"at": [1.8, 3.3], "width": 1.2, "sill": 0.9}],
56
+ "furniture": [
57
+ {"name": "King bed", "type": "bed", "width": 1.8, "depth": 2.0, "at": [1.2, 1.3], "facing": "S"},
58
+ {"name": "Left nightstand", "type": "nightstand", "width": 0.45, "depth": 0.4, "at": [0.75, 2.9]},
59
+ {"name": "Right nightstand", "type": "nightstand", "width": 0.45, "depth": 0.4, "at": [3.0, 2.9]},
60
+ {"name": "Wardrobe", "type": "wardrobe", "width": 1.2, "depth": 0.6, "at": [0, 1.6], "facing": "E"},
61
+ {"name": "Desk", "type": "desk", "width": 0.9, "depth": 0.45, "at": [0, 0], "facing": "N"}
62
+ ]
63
+ }
64
+ ```
65
+
66
+ ```
67
+ | King bed | bed | 1.8 × 2 | 1.2, 1.3 | S | front 0.6, left 0.6, right 0.6 |
68
+ | Left nightstand | nightstand | 0.45 × 0.4 | 0.75, 2.9 | S | none |
69
+ | Right nightstand | nightstand | 0.45 × 0.4 | 3, 2.9 | S | none |
70
+ | Wardrobe | wardrobe | 1.2 × 0.6 | 0, 1.6 | E | front 0.6 |
71
+ | Desk | desk | 0.9 × 0.45 | 0, 0 | N | front 0.9 |
72
+
73
+ Floor 11.88 m² · furniture 5.09 m² (43 %) · walkway 0.90 m
74
+
75
+ PASS no overlaps, every piece in the room, no door swing blocked, every clearance clear,
76
+ every piece reached at the walkway width.
77
+ ```
78
+
79
+ The drawing is [`king-bed-bedroom.svg`](king-bed-bedroom.svg).
80
+
81
+ ## The reply
82
+
83
+ > **The plan is in `bedroom.svg`.** The king bed sits against the north wall under the
84
+ > window, the wardrobe on the west wall beside it, and the desk in the south-west corner.
85
+ > From the door there's a clear 0.9 m route along the foot of the bed to both sides and the
86
+ > wardrobe.
87
+ >
88
+ > | Piece | Size | Where |
89
+ > |---|---|---|
90
+ > | King bed | 1.8 × 2.0 m | head on the north wall, 1.2 m from the west wall |
91
+ > | Nightstands | 0.45 × 0.4 m | either side of the bed's head |
92
+ > | Wardrobe | 1.2 × 0.6 m | west wall, doors opening east beside the bed |
93
+ > | Desk | 0.9 × 0.45 m | south-west corner, chair facing the wall |
94
+ >
95
+ > **One change from what you asked:** the desk is 0.9 × 0.45 m, not a standard 1.0 × 0.5 m.
96
+ > At the standard size, its corner comes within 0.81 m of the bed's foot. You could squeeze
97
+ > past, but not walk through, to the wardrobe. If you'd rather keep a full-size desk, a
98
+ > queen bed (1.5 × 2.0 m) in the same place, its left edge 0.3 m further east, leaves room
99
+ > for it; that layout passes the same checks.
100
+ >
101
+ > **Assumed:** nightstands 0.45 × 0.4 m. The door is hinged on the east side as you face it
102
+ > from inside, swinging into the room.
103
+ >
104
+ > **This is a schematic.** It meets the clearances set here: 0.6 m beside and at the foot of
105
+ > the bed, 0.6 m in front of the wardrobe, 0.9 m behind the desk, and a 0.9 m route. It isn't
106
+ > a check against any building or accessibility code. Measure the real room, and the
107
+ > wardrobe's door width, before you buy.
108
+
109
+ ## Why this is the oracle
110
+
111
+ - **Area is not fit.** 43 % coverage looks comfortable. The failures are a door swing and a
112
+ 0.81 m diagonal, which no area sum shows.
113
+ - **A layout is shown only after it passes,** and when the list doesn't fit as given, the
114
+ reply names the piece, the number (0.81 m, not 0.9) and the smallest change that works.
115
+ - **The reply is for the client.** It gives a plan, a table, one change with its reason,
116
+ the assumptions and what the plan is not. It never mentions the checker, the JSON or
117
+ where the file was written from.
118
+
119
+ A cheaper pass answers "yes, it all fits: 5 m² of furniture in a 12 m² room". It then puts
120
+ the desk by the door, where the door hits it on every opening. Or it puts the full-size desk
121
+ in the corner and leaves a gap you turn sideways to get through to the wardrobe.
@@ -0,0 +1,57 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="920" height="890" viewBox="0 0 920 890" font-family="Helvetica, Arial, sans-serif" font-size="11">
2
+ <rect width="920" height="890" fill="#fff"/>
3
+ <text x="20" y="28" font-size="16" font-weight="bold">Bedroom, 3.6 × 3.3 m: king bed, wardrobe and desk</text>
4
+ <text x="20" y="46" fill="#444">Floor 11.88 m² · walkway 0.90 m · checked: passes · schematic</text>
5
+ <polygon points="80.0,780.0 800.0,780.0 800.0,120.0 80.0,120.0" fill="#faf8f4"/>
6
+ <rect x="320.0" y="520.0" width="360.0" height="120.0" fill="#7fb3d5" fill-opacity="0.18" stroke="#5d8fb0" stroke-width="0.6" stroke-dasharray="3 2"/>
7
+ <rect x="200.0" y="230.0" width="120.0" height="290.0" fill="#7fb3d5" fill-opacity="0.18" stroke="#5d8fb0" stroke-width="0.6" stroke-dasharray="3 2"/>
8
+ <rect x="680.0" y="230.0" width="120.0" height="290.0" fill="#7fb3d5" fill-opacity="0.18" stroke="#5d8fb0" stroke-width="0.6" stroke-dasharray="3 2"/>
9
+ <rect x="200.0" y="220.0" width="120.0" height="240.0" fill="#7fb3d5" fill-opacity="0.18" stroke="#5d8fb0" stroke-width="0.6" stroke-dasharray="3 2"/>
10
+ <rect x="80.0" y="510.0" width="180.0" height="180.0" fill="#7fb3d5" fill-opacity="0.18" stroke="#5d8fb0" stroke-width="0.6" stroke-dasharray="3 2"/>
11
+ <polyline points="700.0,780.0 697.5,687.5 382.5,687.5 332.5,637.5 332.5,637.5" fill="none" stroke="#2e8b57" stroke-width="1.6" stroke-dasharray="6 3" stroke-linecap="round"/>
12
+ <polyline points="700.0,780.0 697.5,687.5 387.5,687.5 227.5,542.5 227.5,520.0" fill="none" stroke="#2e8b57" stroke-width="1.6" stroke-dasharray="6 3" stroke-linecap="round"/>
13
+ <polyline points="700.0,780.0 707.5,602.5 707.5,520.0" fill="none" stroke="#2e8b57" stroke-width="1.6" stroke-dasharray="6 3" stroke-linecap="round"/>
14
+ <polyline points="700.0,780.0 697.5,687.5 387.5,687.5 227.5,542.5 227.5,460.0" fill="none" stroke="#2e8b57" stroke-width="1.6" stroke-dasharray="6 3" stroke-linecap="round"/>
15
+ <polyline points="700.0,780.0 697.5,687.5 387.5,687.5 302.5,607.5 167.5,602.5 167.5,602.5" fill="none" stroke="#2e8b57" stroke-width="1.6" stroke-dasharray="6 3" stroke-linecap="round"/>
16
+ <rect x="320.0" y="120.0" width="360.0" height="400.0" fill="#e9e4dc" stroke="#4a4a4a" stroke-width="1.2"/>
17
+ <line x1="320.0" y1="520.0" x2="680.0" y2="520.0" stroke="#1f1f1f" stroke-width="2.4"/>
18
+ <text x="500.0" y="318.0" text-anchor="middle" font-weight="bold" font-size="11">King bed</text>
19
+ <text x="500.0" y="331.0" text-anchor="middle" font-size="10" fill="#444">1.8×2</text>
20
+ <rect x="230.0" y="120.0" width="90.0" height="80.0" fill="#e9e4dc" stroke="#4a4a4a" stroke-width="1.2"/>
21
+ <line x1="230.0" y1="200.0" x2="320.0" y2="200.0" stroke="#1f1f1f" stroke-width="2.4"/>
22
+ <text x="275.0" y="158.0" text-anchor="middle" font-weight="bold" font-size="11">Left nightstand</text>
23
+ <text x="275.0" y="171.0" text-anchor="middle" font-size="10" fill="#444">0.45×0.4</text>
24
+ <rect x="680.0" y="120.0" width="90.0" height="80.0" fill="#e9e4dc" stroke="#4a4a4a" stroke-width="1.2"/>
25
+ <line x1="680.0" y1="200.0" x2="770.0" y2="200.0" stroke="#1f1f1f" stroke-width="2.4"/>
26
+ <text x="725.0" y="158.0" text-anchor="middle" font-weight="bold" font-size="11">Right nightstand</text>
27
+ <text x="725.0" y="171.0" text-anchor="middle" font-size="10" fill="#444">0.45×0.4</text>
28
+ <rect x="80.0" y="220.0" width="120.0" height="240.0" fill="#e9e4dc" stroke="#4a4a4a" stroke-width="1.2"/>
29
+ <line x1="200.0" y1="460.0" x2="200.0" y2="220.0" stroke="#1f1f1f" stroke-width="2.4"/>
30
+ <text x="140.0" y="338.0" text-anchor="middle" font-weight="bold" font-size="11">Wardrobe</text>
31
+ <text x="140.0" y="351.0" text-anchor="middle" font-size="10" fill="#444">1.2×0.6</text>
32
+ <rect x="80.0" y="690.0" width="180.0" height="90.0" fill="#e9e4dc" stroke="#4a4a4a" stroke-width="1.2"/>
33
+ <line x1="80.0" y1="690.0" x2="260.0" y2="690.0" stroke="#1f1f1f" stroke-width="2.4"/>
34
+ <text x="170.0" y="733.0" text-anchor="middle" font-weight="bold" font-size="11">Desk</text>
35
+ <text x="170.0" y="746.0" text-anchor="middle" font-size="10" fill="#444">0.9×0.45</text>
36
+ <polygon points="80.0,780.0 800.0,780.0 800.0,120.0 80.0,120.0" fill="none" stroke="#111" stroke-width="24.0" stroke-linejoin="miter"/>
37
+ <line x1="320.0" y1="120.0" x2="560.0" y2="120.0" stroke="#fff" stroke-width="25.0"/>
38
+ <line x1="320.0" y1="112.0" x2="560.0" y2="112.0" stroke="#2b6cb0" stroke-width="1"/>
39
+ <line x1="320.0" y1="120.0" x2="560.0" y2="120.0" stroke="#2b6cb0" stroke-width="1"/>
40
+ <line x1="320.0" y1="128.0" x2="560.0" y2="128.0" stroke="#2b6cb0" stroke-width="1"/>
41
+ <line x1="620.0" y1="780.0" x2="780.0" y2="780.0" stroke="#fff" stroke-width="25.0"/>
42
+ <line x1="780.0" y1="780.0" x2="780.0" y2="620.0" stroke="#b5531a" stroke-width="1.6"/>
43
+ <path d="M 780.0 620.0 A 160.0 160.0 0 0 0 620.0 780.0" fill="none" stroke="#b5531a" stroke-width="0.8" stroke-dasharray="3 2"/>
44
+ <text x="700.0" y="853.0" text-anchor="middle" font-size="9" fill="#b5531a">Door</text>
45
+ <line x1="80.0" y1="810.0" x2="800.0" y2="810.0" stroke="#555" stroke-width="0.8"/>
46
+ <line x1="76.0" y1="814.0" x2="84.0" y2="806.0" stroke="#555" stroke-width="1.2"/>
47
+ <line x1="796.0" y1="814.0" x2="804.0" y2="806.0" stroke="#555" stroke-width="1.2"/>
48
+ <text x="440.0" y="805.0" text-anchor="middle">3.6 m</text>
49
+ <line x1="50.0" y1="780.0" x2="50.0" y2="120.0" stroke="#555" stroke-width="0.8"/>
50
+ <line x1="46.0" y1="784.0" x2="54.0" y2="776.0" stroke="#555" stroke-width="1.2"/>
51
+ <line x1="46.0" y1="124.0" x2="54.0" y2="116.0" stroke="#555" stroke-width="1.2"/>
52
+ <text x="44.0" y="450.0" text-anchor="middle" transform="rotate(-90 44.0 450.0)">3.3 m</text>
53
+ <g transform="translate(880 40) rotate(0.0)"><polygon points="0,-20 7,9 0,4 -7,9" fill="#111"/><text x="0" y="-25" text-anchor="middle" font-weight="bold">N</text></g>
54
+ <rect x="80" y="866.0" width="100.0" height="6" fill="#111"/>
55
+ <rect x="180.0" y="866.0" width="100.0" height="6" fill="#fff" stroke="#111"/>
56
+ <text x="286.0" y="872.0">1 m</text>
57
+ </svg>
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "furniture-layout",
3
+ "version": "0.2.1",
4
+ "description": "Lay out the furniture in a room at real sizes and draw it as a dimensioned SVG, with a script that fails the layout when pieces overlap or leave the room, block a door's swing, or leave a walkway, bed side, chair pull-back or wheelchair turning space narrower than it needs. Use when a designer or homeowner asks to \"lay out this living room\", \"will a king bed fit\", \"arrange the furniture\", \"plan this office for 8 desks\", \"check the clearances\", or has a room's size, its doors and windows and a list of furniture.",
5
+ "entrypoint": "SKILL.md",
6
+ "deps": {
7
+ "npm": [],
8
+ "pip": []
9
+ },
10
+ "env": {
11
+ "required": [],
12
+ "optional": []
13
+ },
14
+ "related": [
15
+ "floor-plan-layout"
16
+ ],
17
+ "handoff": [
18
+ {
19
+ "to": "floor-plan-layout",
20
+ "when": "the room's size or its walls aren't settled yet, or the person wants the whole floor planned",
21
+ "purpose": "Plan the rooms and their doors first, so each room has a size to furnish.",
22
+ "fallback": "If floor-plan-layout is absent, ask for the room's width, depth and door positions, or take them from a drawing the person has, before placing any furniture."
23
+ }
24
+ ],
25
+ "tags": [
26
+ "interior-design",
27
+ "furniture",
28
+ "layout",
29
+ "clearances",
30
+ "space-planning",
31
+ "svg",
32
+ "dimensions"
33
+ ],
34
+ "permissions": {
35
+ "network": [],
36
+ "commands": [],
37
+ "files": "named-paths",
38
+ "notes": "Reads the layout.json it is given and writes the SVG to the path passed with --svg."
39
+ },
40
+ "model": {
41
+ "tier": "heavy",
42
+ "rationale": "Furnishing a room is design judgment: zones, focal wall and circulation traded against clearances, with a checker to iterate against."
43
+ }
44
+ }