metadata:
  project: Kingsford Hotel Bacolod — BMS
  date: 2026-04-28
  source: A-025 (BACnet/IP + MS-TP + Modbus); BFP IRR FRLS jacket; Megaworld DRC-004-2024
  status: draft

# Cable-spec rule table consumed by generate-a3-cable-schedule.py.
# Each rule has applies_to{c_o, system, type, role} matched in order.
# Specific rules first; generic catch-alls last.

cable_specs:

  - name: "Network — BACnet/IP (Cat6 FRLS)"
    applies_to: { type: Network, role: any }
    spec: "Cat6 4P × 23 AWG U/UTP, FRLS jacket (BACnet/IP)"
    cores: 4
    awg: 23
    shielded: false
    frls: true

  - name: "Modbus power-meter trunk (1pr × 22 AWG)"
    applies_to: { system: power_metering }
    spec: "Modbus shielded twisted-pair, 1pr × 22 AWG (e.g., Belden 9841)"
    cores: 2
    awg: 22
    shielded: true
    frls: true

  - name: "Modbus BTU-meter cable"
    applies_to: { system: btu_metering }
    spec: "Modbus shielded twisted-pair, 1pr × 22 AWG"
    cores: 2
    awg: 22
    shielded: true
    frls: true

  - name: "Equipment Supplier HLI — chiller / boiler / VFD aux contacts"
    applies_to: { c_o: "Equipment Supplier", type: any }
    spec: "4C × 1.5 mm² FRLS (equipment aux contacts — status / HOA / trip)"
    cores: 4
    awg: 16
    shielded: false
    frls: true

  - name: "ME Contractor actuator (motorized valve / damper)"
    applies_to: { c_o: "ME Contractor", type: any }
    spec: "4C × 1.5 mm² FRLS (ME-supplied valves / dampers — status + control)"
    cores: 4
    awg: 16
    shielded: false
    frls: true

  - name: "Panel power feed"
    applies_to: { role: panel_power_feed }
    spec: "3C × 2.5 mm² FRLS (240V single-phase BMS panel power feed)"
    cores: 3
    awg: 14
    shielded: false
    frls: true

  - name: "BMS sensor signal (default)"
    applies_to: { type: any }
    spec: "4C × 1.5 mm² shielded FRLS (BMS signal — sensors)"
    cores: 4
    awg: 16
    shielded: true
    frls: true

# Spare strategy (Op#11 — reasoned per project)
# Per BMS-01 spec: 25% spare per I/O class. This is more aggressive than
# the legacy "+2 over total" — and reflects Megaworld typical for casino +
# hotel where future expansion is anticipated.
spare_strategy:
  AI: 0.25
  AO: 0.25
  DI: 0.25
  DO: 0.25
  HLI: 0.10  # less spare for HLI since chiller / boiler integrations are fixed
  basis: |
    25% physical-IO spare per BMS-01 general spec text. HLI 10% reflects
    integration-side scaling rather than per-point spare. Network drops
    sized to 25% header room per BACnet/IP backbone.

# Trunk topology — agent-reasoned per Megaworld-DRC-004-2024 standard
trunk_topology:
  - name: "BACnet IP backbone"
    description: |
      Server room (LG IT room per A-006) → Core switch → fiber backbone
      to edge switches in each electrical riser shaft (B1, GF, 2F, 3F,
      5F, 6-9F, 10-11F, 12F, Roofdeck) → Cat6 to each BMS field panel.
    length_m: 380   # 14 panels × 35 m typical-floor riser - some shared trunk
    cable: "Single-mode fiber 12-strand for backbone; Cat6 for last-leg drops"

  - name: "MS/TP field bus"
    description: |
      Per-floor MS/TP bus interconnecting unit-level controllers (FCU,
      VAV, exhaust-fan controllers) on the same floor; daisy-chain
      architecture, max 30 nodes per segment.
    length_m: 700   # 14 panels × 50 m typical floor MS/TP run average
    cable: "BACnet MS/TP shielded twisted-pair trunk, 1pr × 22 AWG low-cap"
