IFC Gate Cleared and Full Trace Coverage Restored — Vertical Farm QC Pass

System

The Vertical Farm Environment Controller (se-vertical-farm-env) entered this QC session with 60 requirements, 30 trace links, and three quality gate blockers: ifcCount 8 < 20, specTree 7/8 subsystems not complete, and sessions 2 < 10. The session targeted the IFC count blocker directly and resolved the orphan requirement problem in full. Final state: 75 requirements, 70 trace links, 21 IFC requirements, 0/75 orphans, baseline QC-2026-03-22 created.

Findings

Interface coverage (critical): Only 8 IFC requirements existed, all covering external system interfaces (BMS, ERP, Energy, Cloud, CO2 supply). No internal subsystem-to-subsystem interface requirements existed despite 8 subsystems with well-defined interaction patterns. This blocked the ifcCount >= 20 gate.

Orphan requirements (19/60): All five ARC requirements lacked trace links because no system-requirements → architecture-decisions linkset existed. Five external IFC requirements ({{ifc:IFC-REQ-001}} to {{ifc:IFC-REQ-005}}) were orphaned — the STK→SYS→IFC trace chain was incomplete. Four STK requirements ({{stk:STK-REQ-012}} to {{stk:STK-REQ-015}}) had no SYS derivation links. Two SYS requirements ({{sys:SYS-REQ-002}}, {{sys:SYS-REQ-010}}) were missing their STK parent links. {{sub:SUB-REQ-008}} (Lockout Tagout Controller) had no SYS link.

Spray pattern ({{sys:SYS-REQ-015}}): This SIL 3 independence requirement had 5 SUB links with no rationale on any of them. All five are genuine derivations (SIL 3 PLC certification, scan time, hardwired bus, data diode, proof test), but the missing rationale was a protocol violation. Each link now carries rationale explaining why the cascade is necessary rather than mechanical.

Lint (115 findings, 10 high): The high-severity findings centre on ontological mismatches for zone and normal operation (hex 00000000 — unclassified entities) triggering Biological/Biomimetic and Ethically Significant flags. These are classification artifacts from generic node labels rather than real requirements gaps. Medium-severity coverage gaps (HMI concept in STK, “injection” in SYS) were partially addressed via new IFC trace chains; full sub-level decomposition remains for subsequent sessions.

--pattern SHALL was not a valid pattern value (valid: ubiquitous, event, state, unwanted, optional). Earlier silent failures were caught when count checks showed no change. All new requirements used ubiquitous for unconditional SHALL statements.

Corrections

Created 13 interface requirements ({{ifc:IFC-REQ-009}} to {{ifc:IFC-REQ-021}}) covering all internal subsystem communication paths:

  • {{entity:Supervisory Control Subsystem}} ↔ {{entity:Zone Controller Network}}: recipe setpoint distribution ({{ifc:IFC-REQ-009}}), fault event publication ({{ifc:IFC-REQ-021}})
  • {{entity:CO2 Enrichment Subsystem}} ↔ ZCN: concentration feedback at 1Hz ({{ifc:IFC-REQ-010}}), setpoint commands ({{ifc:IFC-REQ-020}})
  • {{entity:Climate Management Subsystem}} ↔ ZCN: HVAC actuator commands with 1s acknowledgement ({{ifc:IFC-REQ-011}})
  • {{entity:Nutrient Management Subsystem}} ↔ ZCN: dosing commands and EC/pH feedback ({{ifc:IFC-REQ-012}})
  • {{entity:Horticultural Lighting Subsystem}} ↔ ZCN: DALI-2/DMX512 LED commands ({{ifc:IFC-REQ-013}})
  • {{entity:Safety Interlock Subsystem}} → CO2 Enrichment: hardwired de-energize-to-trip relay ({{ifc:IFC-REQ-014}})
  • Safety Interlock → {{entity:Supervisory Control Subsystem}}: unidirectional OPC UA status bus ({{ifc:IFC-REQ-015}})
  • {{entity:Data Acquisition and Compliance Subsystem}} ← ZCN: OPC UA subscription at 1-min resolution ({{ifc:IFC-REQ-016}})
  • Supervisory Control → Data Acquisition: REST API for compliance reports ({{ifc:IFC-REQ-017}})
  • {{entity:Climate Management Subsystem}} → Safety Interlock: hardwired thermal 38°C contact ({{ifc:IFC-REQ-018}})
  • {{entity:Nutrient Management Subsystem}} → Safety Interlock: hardwired dosing-excess contact ({{ifc:IFC-REQ-019}})

Added two VER requirements ({{sub:VER-REQ-005}}, {{sub:VER-REQ-006}}) covering the new interfaces. Created system-requirements → architecture-decisions linkset and added all 5 ARC trace links. Resolved all 19 orphan requirements via 26 new trace links. Deleted duplicate decomposition diagram.

Residual

The specTree 7/8 gate and sessions < 10 gate remain open — these require further decomposition sessions. Medium-severity lint findings for zone and normal operation (unclassified entities, hex {{hex:00000000}}) persist as classification noise. REQ-SEVERTICALFARMENV-003 (a failed early creation attempt, deleted before baseline) does not appear in the final snapshot.

Next

flowchart TB
  n0["Vertical Farm Environment Controller"]
  n1["Climate Management Subsystem"]
  n2["Horticultural Lighting Subsystem"]
  n3["Nutrient Management Subsystem"]
  n4["CO2 Enrichment Subsystem"]
  n5["Safety Interlock Subsystem"]
  n6["Supervisory Control Subsystem"]
  n7["Data Acquisition and Compliance Subsystem"]
  n8["Zone Controller Network"]
  n0 --> n1
  n0 --> n2
  n0 --> n3
  n0 --> n4
  n0 --> n5
  n0 --> n6
  n0 --> n7
  n0 --> n8
  n8 -->|setpoints/feedback| n1
  n8 -->|PWM commands| n2
  n8 -->|dose/irrigate| n3
  n8 -->|valve commands| n4
  n6 -->|recipes/modes| n8
  n8 -->|sensor data| n7
  n5 -.->|CO2 trip| n4
  n5 -.->|thermal trip| n2

Status set to qc-reviewed. Next session should decompose the remaining 7 subsystems to clear the specTree 7/8 gate — Climate Management, Nutrient Management, Horticultural Lighting, Supervisory Control, Data Acquisition, Zone Controller Network, and CO2 Enrichment all need component-level decomposition and SUB requirements.

← all entries