# Small-power rules playbook, BS 7671 (draft)

> **Status:** draft v0.1 for engineer review, not an approved NFE standard · **Standard:** BS 7671 (NFE's default) · **Scope:** apartment type A · **Rule file:** [`rules/bs7671/apartment_type_a_small_power.yaml`](https://github.com/Nearly-Free-Energy/nfe-electrical-toolkit/blob/main/rules/bs7671/apartment_type_a_small_power.yaml) · **Owner:** to be named · **Last reviewed:** 21 Oct 2026

This page holds the reasoning behind NFE's rules for where small-power sockets go on jobs under BS 7671. The YAML rule file holds the numbers that the [electrical toolkit](https://bookstack.nearlyfreeenergy.com/link/198) applies. BS 7671 sets no socket counts or positions, so these are NFE's own design rules, applied under it. They decide where sockets go; they don't replace the engineer's BS 7671 design checks.

The first draft was read off the engineer's own layout for the repeated apartment type on LSHA F6 (apartment type A: the two mirrored apartments, W and E) and was tried in the [phase 1 pilot](https://bookstack.nearlyfreeenergy.com/link/196). So it records what we drew, not yet what we have agreed is right. **Engineers: fill in the "To decide" items, correct anything that's wrong, and name who signs it off.**

## How to change a rule

1. Agree the change and write the reason on this page.
2. Change the YAML to match, and raise its version (v0.1-draft, then v0.2-draft and so on).
3. Add a line to the history table at the bottom.

A rule set is written for one standard, and the toolkit refuses to apply it to a job under another. When a job is governed by IEC 60364 or US EAS 811-1:2014, it gets its own playbook page and rule folder.

## Defaults for every room

| Setting | Draft value | Basis | To decide |
|---|---|---|---|
| Clearance from door openings | 0.30 m | Draft value | Confirm |
| Clearance from corners | 0.30 m | Draft value | Confirm |
| Minimum spacing between sockets | 0.80 m | Draft value | Confirm |
| Walls to avoid | Walls facing a balcony | The LSHA apartments' lounge, dining and kitchen balcony sides are glazed folding doors | Confirm. Windows are not detected yet |
| Mounting height, high-level socket | 1,200 mm | F6 legend | Confirm |
| Mounting height, all other sockets | Not set | Not on the pilot drawings | Set a height for each type |

For reference, the research noted that England's Approved Document M puts switches and sockets in dwellings 450–1,200 mm above the floor ([Electrical Drawing Tools Evaluation (Oct 2026)](https://bookstack.nearlyfreeenergy.com/link/193)).

## Rules by room: apartment type A (v0.1)

| Room | Draft rule | Why, and how it did on F6 | To decide |
|---|---|---|---|
| Bedroom | 2 twin USB sockets, a pair either side of the bed head, 2.4 m apart | Bedside pair; the engineer used USB twins 2.4–2.5 m apart. All 4 within 0.11 m of the engineer's | Height. Sockets on any other wall (desk, dressing table)? |
| Lounge | 3 twin 13 A sockets on the media wall, plus 1 high-level twin on the same wall for a wall-mounted TV. The media wall is the wall the media unit stands against; failing that, the wall shared with the other lounge; failing that, the longest wall | TV and media cluster. All 8 TV-wall sockets within 0.6 m | Sockets on other walls? |
| Kitchen | 1 high-level twin on the longest wall (worktop, by the hob run); 2 twin 13 A on the wall backing onto the pantry (appliances); 1 high-level twin on that pantry wall (worktop) | Parts of the kitchens were missed by 1.1–6.9 m | How many worktop sockets, and how far apart? |
| Kitchen island | Not modelled yet | The engineer drew two `HIGHLEVEL` symbols on each island, which the legend calls floor sockets. Islands aren't detected yet, and floor sockets have no symbol of their own | A rule, and a separate floor-socket symbol |
| Cinema | 3 twin 13 A along the two long side walls (AV equipment), plus 4 high-level twins on the same walls for wall-mounted AV and speakers (a guess: two per side wall) | The far end of each cinema was missed | What goes on the far wall? Is the high-level count right? |
| Lobby | 1 twin 13 A anywhere on the perimeter (cleaning) | – | Confirm |
| Pantry | 1 twin 13 A anywhere on the perimeter (appliance) | Rule unknown; missed on F6 | The rule |
| Balcony | 1 twin 13 A on the longest wall | The engineer used plain twins on the short end wall; missed on F6 | Weatherproof or not (a weatherproof type exists), and which wall |
| Dining | None | The engineer put no sockets in the dining zones | Sockets or not |
| Bathroom and WC | None modelled | The shaver sockets sit in unlabelled bathrooms on F6 | A shaver-socket rule |
| Corridor | None modelled | The corridor sockets on F6 are in unlabelled spaces and weren't compared | A rule |

Overall, 27 of the 44 generated sockets landed within 1 m of the engineer's (median 0.58 m). Because the counts were read off the same drawing, matching counts prove nothing about design quality; the positions are the test.

## Device types

The rules name device types. The toolkit's catalogue (`src/nfe_electrical/data/catalogue.yaml`), which the engineers also own, maps each type to an NFE symbol. A mounting height is set only where a pilot legend states one.

| Device type | Symbol (block, attribute) | Height |
|---|---|---|
| `socket_twin_13a` | `SOCKET`, S | Not set |
| `socket_twin_usb` | `SOCKET`, USB | Not set |
| `socket_twin_high_level` | `HIGHLEVEL`, HL | 1,200 mm |
| `socket_twin_weatherproof` | `SOCKET`, WP | Not set |
| `socket_single_13a` | `SOCK SINGLE` | Not set |
| `shaver_socket` | `sh` | Not set |

The catalogue also has a 20 A double-pole switch (`dp_switch_20a`) and a cooker control unit (`cooker_control_unit`), for when the kitchen rules cover them.

## How a rule reads in the YAML

```yaml
bedroom:
  - {type: socket_twin_usb, count: 2, place: pair, wall: bed_head, spacing: 2.4,
     why: "bedside pair either side of the bed head"}
```

- **`place`:** `perimeter` (spread along all usable wall), `wall` (spread along one wall), `pair` (two either side of a wall's midpoint), `corners`, `beside_door`, `centre` or `at`.
- **`wall`:** `longest`, `shortest`, `long_sides` (the two longest facing walls), `bed_head` (the wall the architect's bed is drawn against), `media_wall` (the wall a TV or media unit stands against), `facing_<room type>` (the wall backing onto that room, such as `facing_pantry`), `opposite_door`, or `north`, `south`, `east` or `west`. A list is tried in order.
- **`count`:** a number, or a count by area. For example, `{per_m2: 8, min: 2, max: 6}` means one per 8 m² of floor, at least 2 and at most 6.
- **`why`:** the reason, in one sentence. Keep it in step with this page.

## Decisions needed

- [ ] Counts, walls and spacing for each room type above.
- [ ] A mounting height for every socket type (only the 1,200 mm high-level socket is on the drawings).
- [ ] Dining zones: sockets or not.
- [ ] Balconies: weatherproof sockets or plain twins, and on which wall.
- [ ] Kitchen islands: a floor-socket rule, and a symbol of its own instead of `HIGHLEVEL`.
- [ ] Rules for pantries, the far end of cinemas, bathroom shaver sockets and corridors.
- [ ] The door, corner and spacing clearances.
- [ ] Who owns this playbook, and who signs off each version.

## History

| Version | Date | Change |
|---|---|---|
| v0.1-draft | 21 Oct 2026 | First draft, read off the engineer's LSHA F6 layout for apartment type A and tried in the phase 1 pilot |