Red Team Breaks Confidence in Vertical Farm Verification and Trace Chains
System
{{entity:Vertical Farm Environment Controller}} ({{hex:D1F77818}}), project se-vertical-farm-env. 246 requirements, 244 trace links, 10 diagrams, 17 baselines across 6 documents. Semantic lint reports 42 findings (6 high, 36 medium). Zero orphan requirements. Red team scope: full adversarial review across 7 check categories — failure modes, testability, interface plausibility, proportion, trace brittleness, implausible values, and safety integrity.
Adversarial Findings
Verification Gap (critical, 61 findings). 61 of 137 SUB+IFC requirements (45%) have no verification trace link. The entire {{entity:Zone Controller Network}} subsystem (8 reqs), all {{entity:Supervisory Control Subsystem}} reqs (4/4), and a block of late-session additions (SUB-REQ-077 through SUB-REQ-097) are completely unverified. The 62 VER requirements that exist are well-written, but they cover barely half the implementable specification.
Trace Spray (6 findings tagged). 13 of 20 SYS requirements have 5+ child links. {{sys:SYS-REQ-003}} has 19 children — a spray pattern that dilutes traceability to meaninglessness. {{sys:SYS-REQ-004}} and {{sys:SYS-REQ-006}} each have 11. While each link carries rationale text, the sheer fan-out suggests mechanical linking during decomposition rather than genuine derivation analysis. Tagged rt-mechanical-trace.
Vague Interfaces (7 findings tagged). 7 of 42 IFC requirements lack protocol, data rate, or latency specification. {{ifc:IFC-REQ-042}} (OpenADR Virtual End Node to Supervisory Control) specifies only “internal message queue” with no protocol or timing. {{ifc:IFC-REQ-028}} specifies pipe diameter but no flow rate or pressure. {{ifc:IFC-REQ-011}} and {{ifc:IFC-REQ-023}} describe signal types without timing constraints. Tagged rt-vague-interface.
Implausible Values (6 findings tagged). {{sub:SUB-REQ-066}} specifies 10 Hz PID cycle rate — a round number with no derivation from control-loop stability analysis. {{sub:SUB-REQ-012}} specifies ≤100 ms CO2 PID update period. {{sub:SUB-REQ-015}} specifies ±100 ppm CO2 accuracy. {{sub:SUB-REQ-053}} specifies ±1.0°C temperature tolerance. These round thresholds appear across unrelated subsystems without independent justification. Tagged rt-implausible-value.
Proportion Imbalance. {{entity:Supervisory Control Subsystem}} has only 4 SUB requirements versus an average of 12 per subsystem — under-specified for a SCADA-class component managing recipes, alarms, historian, and cybersecurity. 26 of 95 SUB requirements are untagged (no subsystem assignment), making per-subsystem analysis unreliable.
Coverage Gaps (13 findings from lint). 6 STK concepts (HMI, reference standards, IEC 61000-4 series, locally stored crop recipes, zone disruption avoidance, continued automated operation) have no corresponding SYS or SUB requirements. 7 SYS concepts (production operation, independent safety-rated CO2 sensor, software controller, injection, safety function) lack SUB decomposition.
Ontological Mismatches (6 high). 6 entities classified without {{trait:Physical Object}} have requirements imposing physical constraints. 9 of 15 entities classified {{trait:System-Essential}} have no redundancy or failover requirements — including the system itself.
Flagged Requirements
| Ref | Category | Issue |
|---|---|---|
| {{sys:SYS-REQ-003}} | rt-mechanical-trace | 19 child links — trace spray |
| {{sys:SYS-REQ-004}} | rt-mechanical-trace | 11 child links |
| {{sys:SYS-REQ-006}} | rt-mechanical-trace | 11 child links |
| {{sys:SYS-REQ-011}} | rt-mechanical-trace | 11 child links |
| {{sys:SYS-REQ-001}} | rt-mechanical-trace | 10 child links |
| {{sys:SYS-REQ-015}} | rt-mechanical-trace | 10 child links |
| {{ifc:IFC-REQ-007}} | rt-vague-interface | No timing/latency for relay outputs |
| {{ifc:IFC-REQ-008}} | rt-vague-interface | No response time for zone-inhibit signal |
| {{ifc:IFC-REQ-011}} | rt-vague-interface | No protocol/timing for HVAC actuation |
| {{ifc:IFC-REQ-023}} | rt-vague-interface | No timing for discrete output signals |
| {{ifc:IFC-REQ-027}} | rt-vague-interface | No timing for valve actuation |
| {{ifc:IFC-REQ-028}} | rt-vague-interface | Pipe spec with no flow rate/pressure |
| {{ifc:IFC-REQ-042}} | rt-vague-interface | No protocol for internal message queue |
| {{sub:SUB-REQ-012}} | rt-implausible-value | ≤100 ms PID update — round, no derivation |
| {{sub:SUB-REQ-015}} | rt-implausible-value | ±100 ppm accuracy — round threshold |
| {{sub:SUB-REQ-035}} | rt-implausible-value | 10 seconds dry-run detection — round |
| {{sub:SUB-REQ-053}} | rt-implausible-value | ±1.0°C tolerance — round, no derivation |
| {{sub:SUB-REQ-066}} | rt-implausible-value | 10 Hz PID cycle — round, no stability analysis |
| {{sub:SUB-REQ-067}} | rt-implausible-value | 5 seconds NOR flash persist — round |
Domain Analogs Checked
| Analog | Source | Gaps Surfaced |
|---|---|---|
| {{entity:object controllers}} ({{hex:54BC1008}}) | Factory corpus | No recipe version control or rollback requirements |
| {{entity:Safety and Interlock Subsystem}} ({{hex:50B53A18}}) | Factory corpus | No common-cause failure analysis between safety channels |
| {{entity:Safety Interlock and Trip System}} ({{hex:50F77859}}) | Factory corpus | No proof-test coverage metric requirement |
| Greenhouse IPM systems | Domain knowledge | No pest/disease outbreak isolation or containment requirements |
| Pharmaceutical cleanroom | Domain knowledge | No airborne contamination monitoring or particulate count requirements |
flowchart TB
n0["Vertical Farm Environment Controller"]
n1(["Grower Technician"])
n2(["Facility Manager"])
n3(["Maintenance Technician"])
n4["Building Management System"]
n5["Crop Planning / ERP"]
n6["Energy Management / Grid"]
n7["Cloud Monitoring Platform"]
n8["CO2 Bulk Supply System"]
n9(["Harvest Crew"])
n1 -->|Recipe adjustments, commands| n0
n0 -->|Dashboard, alarms, analytics| n1
n2 -->|Scheduling, overrides| n0
n0 -->|KPI reports, fault alerts| n2
n3 -->|Calibration, lockout, actuator test| n0
n4 -->|Fire alarm, weather data| n0
n0 -->|Energy consumption| n4
n5 -->|Crop recipes, zone schedule| n0
n0 -->|Environmental logs, harvest data| n5
n6 -->|Pricing, DR requests| n0
n0 -->|Load forecasts| n6
n0 -->|Telemetry, sensor data| n7
n7 -->|Anomaly alerts, predictions| n0
n8 -->|Tank level, pressure| n0
n0 -->|Valve control signals| n8
n9 -->|Zone entry/exit| n0
n0 -->|Zone status, safety conditions| n9
Recommendations
- Close verification gap (priority 1). Write VER requirements for the 61 unverified SUB/IFC reqs, prioritising SIL-tagged and safety-related requirements first.
- Prune trace spray. Review SYS-REQ-003’s 19 child links — most should be indirect via intermediate SUB requirements, not direct. Reduce to genuine first-order derivations.
- Specify interface timing. Add latency or response-time constraints to the 7 vague IFC requirements — safety-critical relay interfaces (IFC-REQ-007, IFC-REQ-008) are the highest priority.
- Derive performance values. Justify the 6 round-number thresholds from control-loop analysis, sensor datasheets, or crop-science literature. Replace placeholders with engineered values.
- Decompose Supervisory Control. 4 SUB requirements for a SCADA system is implausible — expect 15+ covering historian, alarm management, recipe engine, cybersecurity, HMI, and redundancy.
- Tag and assign 26 orphan SUB reqs. Without subsystem tags, per-subsystem coverage analysis is impossible.
- Add biosecurity/IPM requirements. Vertical farming’s controlled environment makes it vulnerable to rapid pathogen spread — no requirements address outbreak detection, zone isolation for contamination, or air filtration monitoring.
- Add redundancy/failover for System-Essential entities. 9 of 15 classified entities lack any redundancy requirement despite being tagged System-Essential.
Verdict
Informational. 19 requirements tagged across 3 categories (6 rt-mechanical-trace, 7 rt-vague-interface, 6 rt-implausible-value). 61 SUB/IFC requirements unverified (45%). 42 semantic lint findings (6 high, 36 medium). 13 STK/SYS coverage gaps. 4 domain gap findings stored. The specification has genuine engineering depth in safety interlock and CO2 enrichment subsystems, but verification coverage, trace discipline, and supervisory control decomposition are materially incomplete.