openFTTH
FeaturesHow it worksDocsChangelogGitHub

Docs/Design

Rulebooks

The YAML file that holds every number a solver or validator may use.

1 min read

A rulebook is a YAML file holding every number a solver or validator may use: optical budgets, split ratios, cable sizes, distances, losses, capacities and prices. The crew can read it, explain it and change single values on your request; it can never bypass it. A copy of the rulebook used is saved in every project as rulebook.yaml.

Presets

PresetWhat it is
generic-gponNeutral: centralised 1:32 split GPON, class B+, underground in footpaths.
generic-xgsponThe XGS-PON counterpart.
belgiumFlanders draft.
norwayDraft, cascaded split.

The presets live in rulebooks/.

Where the numbers come from

Every value in a preset carries a comment: # source: ... for a public specification or datasheet, # assumed otherwise. A design partner reviews the assumed values before a preset is called anything but "draft". An excerpt from generic-gpon.yaml:

yaml
pon:
  class: B+                 # source: ITU-T G.984.2 amendment 1, class B+
  budget_db: 28.0           # source: G.984.2 B+ max ODN loss
  min_loss_db: 13.0         # source: G.984.2 B+ min ODN loss
  max_differential_db: 15.0 # source: G.984.2 max differential optical path loss
  split_ratio: 32           # assumed: most common residential design
  cascade: null             # centralised split in the FDH

distances:
  max_drop_m: 150           # assumed: typical limit for a drop without a mid-span closure
  max_dist_m: 2000          # assumed
  max_reach_km: 20          # source: G.984 logical reach 20 km
  max_pull_m: 250           # assumed

Sections

SectionWhat it sets
pontechnology (gpon, xgspon or gpon+xgspon), class and budget, split ratio, optional cascade, architecture, worst-case wavelength
fibersdistribution and feeder ladders, drop fibres, spare %, take rate
homescount dwelling units, apartment estimation when there is no unit data
distancesmax drop, max FDH→FAT, logical reach, pulling distance
loss_db, connectors_per_pathconnector, splice and splitter losses, fibre attenuation per wavelength, design margin
fdh, fat, chambers, closures, slack, ductscapacities, fill limits, placements, sizes
routingOSM highway classes no cable may follow
surfaces, highway_to_surfacetrench + reinstatement cost per metre by surface, and which surface each highway class trenches in
aerial, facadecable on existing poles or along building fronts (facade is off by default; it needs the owners' consent)
insideblocks of flats: riser, floor boxes, flat cabling
phasingnumber of build phases and their order; one BOQ per phase
crossingsthe price and longest length of a bore under a motorway, railway, water or unmapped obstacle
popsmax_units, the units one POP serves
units, labourunit prices

Changing prices and limits

Ask the crew to change a single value, for example a unit price or distances.max_drop_m; the crew changes single values on your request and can never bypass the rulebook. If you edit a rulebook file yourself, validate it:

bash
uv run openftth-engine rules validate rulebooks/belgium.yaml

The schema is rulebooks/schema.json, generated from the engine's model; do not edit it by hand. The full reference is docs/RULEBOOK.md.